【发布时间】:2020-05-14 03:24:11
【问题描述】:
我有以下递归函数,它返回第 n 个三角形数。您能否解释一下输出是如何的,例如,当我运行how(4) 时,10?
def how(n):
if(n==1):
return 1;
else:
return(n+how(n-1))
print(how(4))
【问题讨论】:
标签: python python-3.x function recursion math
我有以下递归函数,它返回第 n 个三角形数。您能否解释一下输出是如何的,例如,当我运行how(4) 时,10?
def how(n):
if(n==1):
return 1;
else:
return(n+how(n-1))
print(how(4))
【问题讨论】:
标签: python python-3.x function recursion math
函数逻辑如下——如果n是1,则返回1。否则,返回n + how(n-1)。如果我们单步执行how(4) 的函数,我们可以看到它是如何工作的:
how(4) - returns 4 + how(3)
how(3) - returns 3 + how(2)
how(2) - returns 2 + how(1)
how(1) - returns 1
把所有这些放在一起,以下是等价的:
how(4) - returns 4 + how(3)
how(4) - returns 4 + 3 + how(2)
how(4) - returns 4 + 3 + 2 + how(1)
how(4) - returns 4 + 3 + 2 + 1 = 10
【讨论】: