为什么我不能在递归中使用计数器?

时间:2017-06-03 10:33:03

标签: python

我想知道为什么这段代码不会运行。我正在尝试使用递归来编码Fibonacci序列。

def fib(z):
    counter = 1
    nTwo    = 0
    nOne    = 1
    n       = nTwo + nOne

    if counter == z:
        return n

    else:
        counter = 1 + counter
        fib(counter)
        counter += 1
        nTwo    = nOne
        nOne    = n
        n       = nTwo + nOne
        fib(z)

z = 10
fib(z)

为什么这不起作用?

我想知道'逻辑'背后。

2 个答案:

答案 0 :(得分:0)

如果你想要一个如何递归地用Python做Fibonacci序列的例子,这里有一些东西:

def fib(z)
    if z == 0:
         return 0
    if z == 1:
         return 1
    return fib(z-1) + fib(z-2)

当你调用fib(z)时,它只知道变量' z','计数器'一个函数调用的变量独立于另一个函数调用(你可以做fib(z,counter),但这是不必要的。

答案 1 :(得分:-3)

使用while并使用3个变量更简单。 示例:

while True:
    num0=1
    num1=num0 + num0
    num2=num1+num0
    while num0 > num1:
        num1 += num2
        num2 += num1