PYTHON:理解此斐波那契代码有困难
我理解斐波那契的工作原理,只是这段代码让我发疯。我可能经历得不对PYTHON:理解此斐波那契代码有困难,python,fibonacci,Python,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?,不是(3-1)+(3-2)
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?,不是(3-1)+(3-2)==3吗?我可能格式化错误,但请解释它是如何发生的,所以它不像返回(3-1)+(3-2),它通过执行fib1(3-1)+fib1(3-2)来进行自我调用,它分解为返回1+1的fib1(2)+fib1(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它不是
(2)+(1)
它是fib(2)+fib(1)
。什么是fib(1)?什么是fib(2)?它不是(n-1)+(n-2)
。它是fib1(n-1)+fib1(n-2)
。这叫做递归。但是,不幸的是,为了理解递归,你必须首先理解递归……当n==3
时,它不会返回(3-1)+(3-2)
它返回fib1(3-1)+fib1(3-2)
=fib1(2)+fib1(1)
,即1+1==2