我无法理解下面提到的代码的最后一行的逻辑。该代码是递归函数,可为您提供数字的阶乘。每次(阶乘(n-1))返回什么?
def factorial(n): if n<=1: return 1 else: return n*factorial(n-1)
================================================ ==================
答案 0 :(得分:1)
如果您正在计算某件事的阶乘
1 * 2 * ... * n
另一种表示方式是
n * (n-1) * (n-2) * ... * 1
或更简化
n * (n-1) * ((n-1)-1) * ... * 1
查看最后一点,您应该可以看到,如果数字为1,则答案为1。否则,它是n
的数字乘以(n-1)
阶乘的结果。
这正是此功能的作用。
def factorial(n): # declare the function
if n<=1:
return 1 # if n is 1 or lower, the answer should be 1.
else:
# otherwise, the answer is the result of n * (all these steps again for (n-1))
return n*factorial(n-1)
假设您给factorial(5)
实际发生的情况是
factorial(5) = 5 * factorial(4)
= 5 * (4 * factorial(3))
= 5 * (4 * (3 * factorial(2)))
= 5 * (4 * (3 * (2 * factorial(1))))
= 5 * (4 * (3 * (2 * 1)))