Fibonacci数列求和代码异常:输入75024与75025结果一致
问题排查:sumFibs函数输入75024与75025返回相同结果
问题根源
代码的核心问题出在筛选条件的判断逻辑:
- 生成斐波那契数列时,循环条件是
fb[-1] <= num,所以当num=75025时,数列会包含75025本身(它是奇数斐波那契数)。 - 但后续筛选奇数的列表推导式里用了
i < num,直接把75025排除在外,导致num=75025的筛选结果和num=75024完全一致,最终求和结果相同。
修复方案
将筛选条件中的i < num修改为i <= num,确保当输入的num本身是符合条件的奇数斐波那契数时,能被计入求和范围。
修复后的代码:
def sumFibs(num): fb = [0, 1] while fb[-1] <= num: fb.append(fb[-1] + fb[-2]) r = [i for i in fb if i % 2 != 0 and i <= num] return sum(r)
验证结果
- 输入
75024时,返回结果仍为60696(符合预期); - 输入
75025时,返回结果为135721(正确包含了75025这个奇数斐波那契数)。
内容的提问来源于stack exchange,提问作者fond bcn
相关产品推荐
相关产品推荐

