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
相关产品推荐
相关产品推荐

