为什么这个 if-elif-else 语句打印 42



我不明白为什么这会返回 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))

这称为递归函数。 它调用自己(使用新参数(,直到它遇到n==0n==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
正如

@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

最新更新