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

斐波那契函数开发:解决输入0或-1时的NameError问题

修复斐波那契数列函数的问题

你的代码目前存在两个核心问题:

  • 未处理负索引场景,不符合需求中"负索引返回-1"的要求
  • 当输入n=0或n=1时,循环range(1,n)不会执行,变量c从未被定义,直接返回会触发NameError

以下是修复后的完整代码:

def fibonacci(n):
    # 优先处理负索引,直接返回-1
    if n < 0:
        return -1
    # 处理数列起始的基础索引
    if n == 0:
        return 0
    if n == 1:
        return 1
    a = 0
    b = 1
    # 从第2项开始循环计算,循环次数对应剩余项数
    for _ in range(n - 1):
        c = a + b
        a = b
        b = c
    return b


if __name__ == '__main__':
    start_num = int(input())
    print(f'fibonacci({start_num}) is {fibonacci(start_num)}')

关键修改说明:

  • 新增负索引判断:函数开头直接检查索引是否为负,满足需求的同时提前终止不必要的计算
  • 单独处理基础项:n=0和n=1是数列的起始项,无需进入循环,直接返回对应值避免变量未定义问题
  • 调整循环范围:将range(1,n)改为range(n-1),确保循环次数与需要计算的项数匹配,保证结果准确
  • 移除全局变量声明:c仅作为循环内的临时计算变量,不需要声明为全局变量,避免全局命名空间污染

测试边界场景验证:

  • 输入-3 → 返回-1
  • 输入0 → 返回0
  • 输入1 → 返回1
  • 输入6 → 返回8(数列:0,1,1,2,3,5,8,第6项为8)

内容的提问来源于stack exchange,提问作者Mount Dew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:48:15