Now we come to implement the factorial in Python. It's as easy and elegant as the mathematical definition.
Let's have a look at an iterative version of the factorial function.
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
We can track how the function works by adding two print() function to the previous function
definition:
def factorial(n):
print("factorial has been called with n = " + str(n))
if n == 1:
return 1
else:
res = n * factorial(n-1)
print("intermediate result for ", n, " * factorial(" ,n-1, "): ",res)
return res
print(factorial(5))
This Python script outputs the following results:
factorial has been called with n = 5 factorial has been called with n = 4 factorial has been called with n = 3 factorial has been called with n = 2 factorial has been called with n = 1 intermediate result for 2 * factorial( 1 ): 2 intermediate result for 3 * factorial( 2 ): 6 intermediate result for 4 * factorial( 3 ): 24 intermediate result for 5 * factorial( 4 ): 120 120
Let's have a look at an iterative version of the factorial function.
def iterative_factorial(n):
result = 1
for i in range(2,n+1):
result *= i
return result
No comments:
Post a Comment