You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python斐波那契数列生成函数计算错误,求排查与修正方案

修复斐波那契数列函数的错误

原代码存在的问题:

  • 循环变量覆盖了函数参数n:for n in range(1,n)中,循环变量与参数同名,直接打乱了循环的终止条件逻辑。
  • 递推逻辑错误:原代码先更新j = j+i,再用更新后的j计算i = j+i,这导致每一步的数值计算完全偏离斐波那契数列“后项等于前两项之和”的规则。
  • 返回值逻辑错误:返回i+j不符合需求,比如输入n=1时,正确结果应为1,但原函数会返回2。
  • 未处理边界情况:对于n=1、n=2这类基础输入,原函数无法输出正确结果。

修正后的代码:

def fibo(n):
    if n <= 0:
        return "请输入正整数"
    elif n == 1 or n == 2:
        return 1
    # 初始化前两项
    prev, curr = 1, 1
    # 从第3项开始迭代,共循环n-2次
    for _ in range(n - 2):
        prev, curr = curr, prev + curr
    return curr

n = input('Enter number:')
print(fibo(int(n)))

修正说明:

  • 新增边界判断:针对非正整数、n=1、n=2的情况直接返回对应结果,贴合斐波那契数列的常规定义。
  • 循环变量改用_:避免覆盖函数参数n,同时明确表示该变量在循环中无需使用。
  • 正确实现递推逻辑:用prev, curr = curr, prev + curr的元组交换写法,确保每次更新时,curr取前两项之和,prev更新为上一轮的curr,完全符合斐波那契数列的递推规则。
  • 调整循环次数:前两项已初始化,从第3项到第n项只需迭代n-2次,即可得到第n项的数值。

内容的提问来源于stack exchange,提问作者סיון חוה סנבטאו

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:40:28