Python斐波那契函数返回错误值问题求助
问题根源:斐波那契数列的索引定义不匹配
当前你的函数返回fibonacci(5)=5,和你预期的3不符,核心原因是你和函数对“第n个斐波那契数”的起始定义不一样。
你的函数采用的定义
函数里的数列是从n=0开始计数的:
fibonacci(0) = 0fibonacci(1) = 1fibonacci(2) = fibonacci(1)+fibonacci(0) = 1fibonacci(3) = fibonacci(2)+fibonacci(1) = 2fibonacci(4) = fibonacci(3)+fibonacci(2) = 3fibonacci(5) = fibonacci(4)+fibonacci(3) = 5
你预期的定义
你认为的“第n个斐波那契数”是从n=1开始计数,且第1项为0:
- 第1个=0,第2个=1,第3个=1,第4个=2,第5个=3
对应函数里的fibonacci(n-1)。
两种修复方案
方案1:修改函数匹配你的预期
调整终止条件,让数列从n=1开始计数,第1项为0:
def fibonacci(n): if n <= 1: return 0 elif n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) print(fibonacci(5)) # 返回3,符合预期
方案2:不修改函数,调整调用参数
如果保留原函数,调用时传入n-1即可得到你要的值:
print(fibonacci(4)) # 返回3,对应你预期的第5个值
内容的提问来源于stack exchange,提问作者Mark Vieira
相关产品推荐
相关产品推荐

