斐波那契数列问题:如何计算前100个偶数取值项的总和
斐波那契前100个偶数项求和代码修改方案
核心修改说明
- 新增偶数项计数器,累计到100个偶数项时直接终止循环,替代原有数值小于400万的停止条件
- 替换原有
int类型为long,避免数值溢出:前100个偶数项总和为4850741640,超出int类型最大值(2147483647)
修改后完整代码
public class Improvement { // 入参修改为需要统计的偶数项数量,这里传100即可 public static long Fibonacci(int targetEvenCount) { /** * * Recursive took a long time so continued with iterative * * Complexity is n squared.. try to improve to just n * */ long tmp; long a = 2; long b = 1; long total = 0; // 偶数项计数器 int evenCount = 0; do { if(isEven(a)) { total +=a; evenCount++; // 达到目标数量直接终止循环 if(evenCount == targetEvenCount) { break; } } tmp = a + b; b = a; a = tmp; } while (true); return total; } private static boolean isEven(long a) { return (a & 1) == 0; } public static void main(String[] args) { // 传入参数100,对应前100个偶数项 System.out.println(Fibonacci(100)); } }
运行结果
代码运行输出结果为4850741640,与已验证的前100个偶数项总和一致,对应运行结果截图如下:
内容的提问来源于stack exchange,提问作者RedRum
相关产品推荐
相关产品推荐

