【发布时间】:2015-09-29 01:59:11
【问题描述】:
所以我一点也不擅长(轻描淡写)。我正在尝试解决 Euler 项目中的问题,但我已经卡在 2 上了。
斐波那契数列中的每个新项都是通过添加前 2 个项生成的。从 1 和 2 开始,前 10 个术语将是:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
通过考虑斐波那契数列中值不超过四百万的项,求偶数项之和。
这是我反复尝试修复的代码: (我认为 for 循环逻辑有问题。)
public class tesy {
public static void main(String args[]) {
int fib = 0;
int tot = 0;
int total = 0;
for (fib = 0; tot < 4000000; fib++) {
tot = fib + (fib + 1);
if (tot % 2 == 0) {
total = tot + total;
}
}
System.out.println(total);
}
}
【问题讨论】:
-
对每个阅读您的代码的人来说非常重要的一件事是格式化(尤其是缩进)。如果您使用 IDE(例如 IntelliJ IDEA),这将自动为您完成。
-
您无需为您的年龄或您目前的 Java 知识道歉 :)。但是你能解释一下你当前的代码有什么问题吗?
-
你为什么不遵循斐波那契数列的定义呢?您正在添加
fib + (fib+1),它只是2*fib + 1,而不是记住之前的斐波那契数(不是它在序列中的位置!)并将其添加到当前的斐波那契数中以检索您的新斐波那契数。 -
tot = fib + (fib + 1) 计算“'fib' 的前一个值与 'fib' 的前一个值加一的和”。你想要“前两个斐波那契数的总和”。 (提示:您需要两个变量来对这样的序列求和 - 前一项和之前的项......)