我不明白为什么它返回42。我问过一个朋友,我在PythonTutor...still上追踪了一下,这没有任何意义。为什么不返回9BC 6-1= 5,6-2= 4,5+4= 9?为什么它一直在循环?还在等什么?它怎么知道该停在哪里呢?
def mystery(n):
if n == 0:
return 2
elif n == 1:
return 4
else:
return mystery(n-1) + mystery(n-2)
print(mystery(6))
发布于 2019-04-24 22:27:08
这被称为递归函数。它调用自己(使用新参数),直到它遇到一个“基本情况”n==0
或n==1
。
mystery(0) == 2
mystery(1) == 4
mystery(2) = mystery(1) + mystery(0) = 6
mystery(3) = mystery(2) + mystery(1) = 10
mystery(4) = mystery(3) + mystery(2) = 16
mystery(5) = mystery(4) + mystery(3) = 26
mystery(6) = mystery(5) + mystery(4) = 42
发布于 2019-04-24 22:33:40
正如@Christian Slater所写的,你写了一个递归函数,你可能正在寻找:
def mystery(n):
if n == 0:
return 2
elif n == 1:
return 4
else:
return (n-1) + (n-2)
print(mystery(6))
输出:9
https://stackoverflow.com/questions/55832381
复制相似问题