PYTHON:麻烦理解这个Fibonacci代码

时间:2017-12-05 17:59:14

标签: python fibonacci

我理解Fibonacci是如何工作的,只是这段代码让我发疯。我可能会错过

def fib1(n):
  if n == 1 or n == 2:
    return 1 
  return fib1(n-1) + fib1(n-2)


for i in range(1,10):
  print(fib1(i))

output = 1 1 2 3 5 8 13 21 34

好的,所以从1开始它返回1然后2也返回1,但是然后3被发送到fib1(n-1)+(n-2)并且它返回2?,isnt(3-1)+( 3-2)== 3?我可能将其格式错误但请解释它是如何发生的

1 个答案:

答案 0 :(得分:0)

所以它不像返回(3-1)+(3-2),它正在做一个recursive call,通过做fib1(3-1)+ fib1(3-2)来打电话给自己,这打破了下降为fib1(2)+ fib1(1),返回1 + 1

我们可以通过走过fib1(4)来解决这个问题:

fibl1(4) - > fibl(4-1)+ fibl(4-2)

fib1(4) - > fibl(3)+ fibl1(2)

fibl(4) - > (fibl(3-1)+ fibl(3-2))+ 1(2是基本情况所以它返回1)

fibl(4) - > (fibl(2)+ fibl(1))+ 1

fibl(4) - > (1 + 1)+ 1

fibl(4) - > 3