java - 欧拉计划,问题 2- Java

标签 java

<分区>

我是一个相对较新的 Java 程序员,现在大部分时间我都在修改这个程序,但我仍然卡住了;我希望你能帮我解决这个问题。

因此该程序应该满足以下要求:

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

这是我的代码:

    //Generates Fibonacci sequence
    while (fibNum < 144)
    {
        int lastValue = (Integer) fibList.get(fibList.size()-1);
        int secondToLastValue = (Integer) fibList.get(fibList.size()-2);

        fibNum = secondToLastValue + lastValue;

        if (fibNum < 144)
        {
            fibList.add(fibNum);
        }

    //Picks out the even numbers from limitFibList
    for (int i = 0; i < fibList.size(); i++)
    {
        if ((Integer) fibList.get(i) % 2 == 0)
        {
            evenNumsFibList.add(fibList.get(i));
        }
    }

    //Sums up the total value of the numbers in the evenNumsFibList
    for (int i = 0; i < evenNumsFibList.size(); i++)
    {
        sum += (Integer) evenNumsFibList.get(i); 
    }

...这是我得到的输出:

Fibonacci sequence list: [1, 2, 3]
Size of the Fibonacci list: 3
Even Numbers list: [2]
Total sum of even numbers: 2

Fibonacci sequence list: [1, 2, 3, 5]
Size of the Fibonacci list: 4
Even Numbers list: [2, 2]
Total sum of even numbers: 6

Fibonacci sequence list: [1, 2, 3, 5, 8]
Size of the Fibonacci list: 5
Even Numbers list: [2, 2, 2, 8]
Total sum of even numbers: 20

Fibonacci sequence list: [1, 2, 3, 5, 8, 13]
Size of the Fibonacci list: 6
Even Numbers list: [2, 2, 2, 8, 2, 8]
Total sum of even numbers: 44

Fibonacci sequence list: [1, 2, 3, 5, 8, 13, 21]
Size of the Fibonacci list: 7
Even Numbers list: [2, 2, 2, 8, 2, 8, 2, 8]
Total sum of even numbers: 78

Fibonacci sequence list: [1, 2, 3, 5, 8, 13, 21, 34]
Size of the Fibonacci list: 8
Even Numbers list: [2, 2, 2, 8, 2, 8, 2, 8, 2, 8, 34]
Total sum of even numbers: 156

Fibonacci sequence list: [1, 2, 3, 5, 8, 13, 21, 34, 55]
Size of the Fibonacci list: 9
Even Numbers list: [2, 2, 2, 8, 2, 8, 2, 8, 2, 8, 34, 2, 8, 34]
Total sum of even numbers: 278

Fibonacci sequence list: [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Size of the Fibonacci list: 10
Even Numbers list: [2, 2, 2, 8, 2, 8, 2, 8, 2, 8, 34, 2, 8, 34, 2, 8, 34]
Total sum of even numbers: 444

Fibonacci sequence list: [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Size of the Fibonacci list: 10
Even Numbers list: [2, 2, 2, 8, 2, 8, 2, 8, 2, 8, 34, 2, 8, 34, 2, 8, 34, 2, 8, 34]
Total sum of even numbers: 654

显然我的 while 循环导致了我的问题,但我不知道如何解决它。

非常感谢您的帮助,

哈克

最佳答案

如果您仔细查看您实际需要的斐波那契数列中的数字(只需对偶数求和),您将看到一个模式:

0  1  1  2  3  5  8  13  21  34  55  89  144 ...
-  O  O  E  O  O  E   O   O   E   O   O    E

请注意,从 0 开始的每第 3 个数字都是偶数。因此,如果您计算每三个斐波那契数,则可以消除任何均匀性检查。再次查看序列,您可以看到如果 k 是您正在查看的当前偶数斐波那契数,而 j 是前一个偶数斐波那契数 n 可以通过以下方式获取:

n = 4k + j

所以在 Java 中,你可以尝试这样的事情:

int j = 0;
int k = 2;
int sum = j+k;

while (k < LIMIT) {
    int tmp = 4*k + j;
    sum = sum + tmp;
    j = k;
    k = tmp;
}

关于java - 欧拉计划,问题 2- Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012253/

相关文章:

java - 分发使用 JRI 和 R 的 Java 应用程序

java - 输入流的skip方法总是返回0

java - 将 Java 对象传递到闭包模板中?

java - Android:应用程序重新启动时下载的文件被删除

java - 根据年月比较两个日期,不注意日期

java - 创建 Java 实例时 Eclipse 中出现错误

java - Hibernate 主子细节映射

java - 我想打印带有破折号对角线的 X 的完整正方形

java - 无法在 Android Studio 中解析 DefaultHttpClient

java - 由并行流填充的 ArrayList 包含空值