# Python Coding challenge - Day 173 | What is the output of the following Python Code?

### Code:

def fun(a, b):

if a == 1:

return b

else:

return fun(a - 1, a * b)

print(fun(4, 2))

### Solution and Explanation:

This code defines a recursive function fun(a, b) that takes two parameters, a and b. Let's break down how the function works:

Function Definition:

def fun(a, b):
Conditional Statement:

if a == 1:
return b
else:
If the value of a is equal to 1, the function returns the value of b.
If a is not equal to 1, the function proceeds to the else block.
Recursion:

return fun(a - 1, a * b)
If a is not equal to 1, the function calls itself recursively with modified arguments:
a - 1 decrements the value of a by 1 in each recursive call.
a * b multiplies a with b and passes the result as the second argument.
This recursive call continues until a becomes 1.
Function Call:

print(fun(4, 2))
This line calls the fun() function with initial values of a = 4 and b = 2.
The result of the function call is printed.
Now let's see how the function operates with the given input fun(4, 2):

Initially, a = 4 and b = 2.
Since a is not equal to 1, the function enters the else block and makes a recursive call with a = 3 and b = 4 * 2 = 8.
Again, since a is not equal to 1, another recursive call is made with a = 2 and b = 3 * 8 = 24.
Once more, a recursive call is made with a = 1. Now, the base case is satisfied, and the function returns b, which is 24.
The final result of fun(4, 2) is 24, which is printed.