我想知道为什么这段代码不会运行。我正在尝试使用递归来编码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)
为什么这不起作用?
我想知道'逻辑'背后。
答案 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