# Python Recursion Function

Recursion is a powerful technique in programming where a function calls itself during its execution. A recursive function allows you to break down a complex problem into simpler sub-problems by calling itself repeatedly.

## Basic syntax of a recursive function

``````1def recursive_function(parameters):
2    if base_case_condition(parameters):
3        return base_case_value
4    recursive_function(modified_parameters)``````

The recursive function should have two cases, a base case where it returns a value without calling itself, and a recursive case where it calls itself with modified parameters until it reaches the base case.

## Example: Factorial of a number using recursion

``````1def factorial(n):
2    if n == 1:
3        return 1
4    else:
5        return n * factorial(n-1)
6
7print(factorial(5))``````

Output:

``1120``

In the above example, we have a function `factorial` that calculates the factorial of a given number `n` recursively. If `n` is equal to 1, it returns 1, otherwise it calls itself with the modified parameter `n-1` until it reaches the base case where `n` is equal to 1.

## Example: Fibonacci sequence using recursion

``````1def fibonacci(n):
2    if n == 1 or n == 2:
3        return 1
4    else:
5        return fibonacci(n-1) + fibonacci(n-2)
6
7for i in range(1, 11):
8    print(fibonacci(i), end=" ")``````

Output:

``11 1 2 3 5 8 13 21 34 55``

In the above example, we have a function `fibonacci` that calculates the nth number in the Fibonacci sequence recursively. If `n` is equal to 1 or 2, it returns 1, otherwise it calls itself with the modified parameters `n-1` and `n-2` until it reaches the base case where `n` is equal to 1 or 2.

Recursion is a very powerful technique, but it should be used with caution as it can easily lead to infinite loops if not implemented properly.