作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是来自 Euler 项目的问题 2。我编写了以下看似无辜的代码:
public class FibonacciEven {
public static void main(String[] stuff) {
long sum = 0;
int i = 0;
while(fib(i) <= 40) {
boolean even = fib(i) % 2 == 0;
if(even) {
sum += fib(i);
}
else {
continue;
}
i++;
}
System.out.println(sum);
}
public static long fib(int n) {
long prev1 = 0;
long prev2 = 1;
for(int i = 0; i < n; i++) {
long savePrev1 = prev1;
prev1 = prev2;
prev2 = savePrev1 + prev2;
}
return prev1;
}
}
我确实读过关于计算斐波那契数的 Java 方法如何非常消耗内存,但是,正如您所看到的,我将限制缩小到 40,但它仍然没有得到到最后,所以我认为我已经得到了一些严重错误的语法。哪一段代码让它永远运行?如果这一切确实是由于该方法需要花费大量时间来运行,那么有人可以提出更好的方法吗?
编辑:好的,现在我的代码如下所示:
public class FibonacciEven {
public static void main(String[] stuff) {
long sum = 0;
int i = 0;
while(fib(i) <= 40) {
boolean even = fib(i) % 2 == 0;
if(even) {
sum += fib(i);
}
i++;
}
System.out.println(sum);
}
public static long fib(int n) {
long prev1 = 0;
long prev2 = 1;
for(int i = 0; i < n; i++) {
long savePrev1 = prev1;
prev1 = prev2;
prev2 = savePrev1 + prev2;
}
return prev1;
}
}
这次它忽略斐波那契数列中的 2(索引 3)。
最佳答案
如果 even
为 false,则最终会继续而不更新 i
- 因此它将再次循环并再次执行完全相同的工作,因此 even
将再次为 false,等等...
我怀疑你只是想取出else
block 。
关于java - 所有偶数斐波那契数之和代码永远不会停止 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145207/
我是一名优秀的程序员,十分优秀!