问题是...
每个新的斐波那契数列项都是通过将前两项相加生成的。通过从1和2开始,前10项分别为:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
通过考虑值不超过四百万的斐波那契数列中的项,请找出偶数值的项之和。
我已经编写了一段代码来实现此操作,如下所示:
每个新的斐波那契数列项都是通过将前两项相加生成的。通过从1和2开始,前10项分别为:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
通过考虑值不超过四百万的斐波那契数列中的项,请找出偶数值的项之和。
我已经编写了一段代码来实现此操作,如下所示:
public class Main {
public static void main(String[] args) {
// Setting up the variables. sumF3 will be printed at the end.
int sumF1 = 1;
int sumF2 = 2;
int sumF3 = 0;
// If loops to cancel out the odd numbers, but let them be added to sumF2 etc anyway.
while(4000000 > sumF1) {
if (sumF1 % 2 == 0) {
sumF3 += sumF1;
}
if (sumF2 % 2 == 0) {
sumF3 += sumF2;
}
// Normal fibonacci sequence.
sumF1 += sumF1 + sumF2;
sumF2 += sumF1 + sumF2;
}
System.out.println(sumF3);
}
}
我首先使用两个if循环过滤出奇数,然后将它们加入到sumF3中。它会一直这样添加到sumF3,直到达到400万以下。当while循环停止时,它应该打印出“4613732”,但实际上打印出了不同的结果(4194302)。我觉得这里存在逻辑缺陷。