Understanding Recursive Functions with Python
Recursion is characterized as the process of describing something in terms of itself; in other words, it is the process of naming the function by itself. Recursion is the mechanism of a function calling itself directly or implicitly, and the resulting function is known as a Recursive function.
Advantages:
- Code reusability
- Easily understandable
- Time complexity sometimes low
- Less number of code
Disadvantages:
- Causes overflow if condition exceeds
- More memory
- It is difficult to understand
- It is difficult to debug
- Terminating conditions in Recursion is a must
Syntax:
def function_name():
.................
|(recursive call)
......................
function_name()
Recursion calls the function which is already called and will call many times till the condition will become false. After that, it will return the value
Applications:
- Tower of Hanoi
- Stack implementation
- Fibonacci implementation
- Round Robin problem in Operating System.
Apart from the above applications below are some examples that depict how to use recursive functions in a program.
Example 1:
Python program to print Fibonacci series up to given terms.
Fibonacci:
Number=sum of two previous numbers
0,1
0+1=1
0+1=2
2+1=3
3+2=5
5+3=8
So the Fibonacci numbers are 0,1,1,2,3,5,8.......
In this program, the values are defined in till_range variables and then we are passing that variable into an argument, then calling the recursive function.
recursive_function(a-1) + recursive_function(a-2)
Implementation:
# Recursive function
def recursive_function(a):
# Check number
if a <= 1:
return a
else:
# Get next term
return(recursive_function(a-1) + recursive_function(a-2))
# Display first fibonacci number
print("\nFibonacci series upto 1 number:")
for i in range(1):
print(recursive_function(i),
end=" ")
# Display first 5 fibonacci numbers
print("\nFibonacci series upto 5 numbers:")
for i in range(5):
print(recursive_function(i),
end=" ")
# Display first 10 fibonacci numbers
print("\nFibonacci series upto 10 numbers:")
for i in range(10):
print(recursive_function(i),
end=" ")
Output:
Fibonacci series upto 1 number: 0 Fibonacci series upto 5 numbers: 0 1 1 2 3 Fibonacci series upto 10 numbers: 0 1 1 2 3 5 8 13 21 34
Example 2:
Python program to find factorial of a number.
Factorial
Number=Number*(Number-1)*(Number-2)...*(Number-(Number+1))
Factorial of 3= 3*2*1
Factorial of 5= 5*4*3*2*1
Factorial of 7 = 7*6*5*4*3*2*1
In this python program, we are going to return the factorial of an integer. We are passing the variable n value to an argument, then we are calling the function.
a* recursion_factorial(a-1)
Implementation:
# recursive function
def recursion_factorial(a):
# check number
if a == 1:
return 1
else:
# multiply with next number
return (a * recursion_factorial(a-1))
# factorial of 7
n = 7
print("Factorial of", n, "is", recursion_factorial(n))
# factorial of 2
n = 2
print("Factorial of", n, "is", recursion_factorial(n))
# factorial of 4
n = 4
print("Factorial of", n, "is", recursion_factorial(n))
# factorial of 9
n = 9
print("Factorial of", n, "is", recursion_factorial(n))
# factorial of 10
n = 10
print("Factorial of", n, "is", recursion_factorial(n))
Output:
Factorial of 7 is 5040 Factorial of 2 is 2 Factorial of 4 is 24 Factorial of 9 is 362880 Factorial of 10 is 3628800