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

Python判断输入数字是否为斐波那契数的代码问题排查

问题根源
  • 核心错误是斐波那契数列的变量更新逻辑错误:计算得到新的斐波那契数summ = temp + k后,原代码直接将temp和k都赋值为新的summ,导致两个变量值完全相同,后续的计算结果会变成当前值的2倍,直接跳过了正常的斐波那契数。比如计算得到2之后,下一次计算结果直接是4,漏掉了3,因此大于2的斐波那契数都无法被识别。
  • 次要问题:默认无法识别边界值0(斐波那契数列第0项为0),同时输出文本中存在拼写错误fibonnaci,正确拼写为fibonacci。
修正方案

修正变量更新的顺序:计算得到新的和之后,先把k赋值为原来的temp,再把temp赋值为新的和summ,保证两个变量始终存储斐波那契数列相邻的两项。

修正后代码
num = int(input("Enter the number you want to check\n"))
temp = 1
k = 0
is_fib = 0
# 兼容边界值0
if num == 0:
    print("Yes. {} is a fibonacci number".format(num))
else:
    summ = 0
    while summ <= num:
        summ = temp + k
        if summ == num:
            is_fib = 1
            print("Yes. {} is a fibonacci number".format(num))
            break
        # 修正更新逻辑
        k = temp
        temp = summ
    if is_fib == 0:
        print("No. {} is NOT a fibonacci number".format(num))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:27:01