我不明白为什么会返回42。 我问了一个朋友,我已经在PythonTutor中对其进行了追踪...仍然没有意义。为什么不只返回9 bc 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))
答案 0 :(得分:4)
这称为递归函数。它会使用新参数进行自我调用,直到遇到“基本情况” 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
答案 1 :(得分:0)
就像@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