不超过400万的偶数斐波那契数求和APL多行函数无输出问题咨询
APL计算小于400万的偶数斐波那契数之和代码修正
原代码问题
- 循环逻辑错误:
:For i :In limit会执行400万次固定次数循环,而非在斐波那契数超过400万时停止,会累加超出限制的数值,同时存在大量无效计算 - 无斐波那契数大小终止判断,无法在数值超出阈值时停止运算
修正后完整代码
result←Euler2 a;b;c;sum;limit b←0 c←1 sum←0 limit←4000000 :While c ≤ limit a←b b←c c←a+b :If 0=2|c sum←sum+c :EndIf :EndWhile result←sum
调整说明
- 将固定次数的For循环替换为条件While循环,只要生成的斐波那契数
c不超过400万就继续运算,超出则立刻终止,不会引入不符合范围的数值 - 保留原有奇偶判断逻辑,仅累加偶数斐波那契数,最终运行得到的正确结果为
4613732,和欧拉计划第2题标准答案一致
内容的提问来源于stack exchange,提问作者Pk1
相关产品推荐
相关产品推荐

