Blu*_*ire 0 java fibonacci while-loop
这是来自项目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;
}
}
Run Code Online (Sandbox Code Playgroud)
我确实读过关于如何计算Fibonacci数字的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;
}
}
Run Code Online (Sandbox Code Playgroud)
这次它忽略斐波纳契数列中的2(索引3).
| 归档时间: |
|
| 查看次数: |
2189 次 |
| 最近记录: |