本文共 830 字,大约阅读时间需要 2 分钟。
斐波那契数列中的偶数项出现在每三项中的一项,即F(2), F(5), F(8), F(11), ...。为了高效求和这些偶数项,使用递推公式直接生成每个偶数项,直到超过400万,这样可以减少计算次数并优化性能。
斐波那契数列中的偶数项满足递推关系:[ F(3n+2) = 4 \times F(3n-1) + F(3n-4) ]通过这个公式,我们可以每次生成下一个偶数项,而不需要生成所有中间的奇数项。
a 和 b 分别存储前两个偶数项。a 和 b 为下一个偶数项的前两个值。private static int sumEvenFib(int N) { if (N < 2) { return 0; } int sum = 0; int a = 2; // F(2) int b = 8; // F(5) if (a <= N) { sum += a; } if (b <= N) { sum += b; } int next = 4 * b + a; // F(8) while (next <= N) { sum += next; a = b; b = next; next = 4 * b + a; } return sum;} public static void main(String[] args) { System.out.println(sumEvenFib(4000000));} 运行上述代码,输出斐波那契数列中不超过400万的偶数之和。
转载地址:http://jhxfk.baihongyu.com/