+ 1
Could someone explain the output step by step for the factorial code ?
def factorial(n): if n == 0: return 1 else: recurse = factorial(n-1) result = n * recurse return result >>>factorial(5) 120
4 Answers
+ 2
(...continued, sorry ran out of character room for the first part lol)
Here, n=5 and recurse=24 because 24 is the return value of the previous iteration. 24*5=120, and 120 is returned as the final result which is then output. 5 factorial, denoted as 5! = 5*4*3*2*1 is what this recusive function is used to calculate and would work with other numbers as well
I hope this helped a little, recursion can be difficult to wrap your head around and someone else may have a better way of explaining it. It can be thought of as for each time the function is called a new âlayerâ or âlevelâ is created until a value is returned, then you move back up through the levels until all operations are complete and a final value is returned
+ 2
You can sort of think of recursion as âlayersâ of a function calling itself until it can escape
To start n=5 so the first condition will be false, meaning in the else statement the recurse variable will be set to the return value of factorial(n-1)
Essentially, factorial(4) is now being called, and in the next iteration n=4. n!=0 so factorial(n-1) will be called once again.
factorial(3) will do the same, continuing until n=0 where the if statment will be true. In this case, the function call for the âlayerâ above will return 1 as the value. recurse will be set to equal 1 in the iteration where n=1. result = 1*1 = 1, 1 is returned and we go back to the âlayerâ above.
1 is returned and recurse is set to 1. In this iteration n=2 so result will be 2*1 which means 2 will be returned.
To the n=3 iteration, recurse will be 2 and result=3*2=6. 6 will be returned.
In the next layer, n=4 and recurse is 6. 4*6=24, 24 is returned.
Finally, weâre back to the first layer where we originally called factorial(5)...
+ 1
Thx a lot, it is sooo complicated for a beginner