我试图获得所有偶数斐波纳契数的总和。我可以打印出数字,但我无法得到它们的总和。这是在java。
class driver {
public static void main(String [] args) {
int a;
int b = 0;
int c = 1;
for (int i = 0; i < 10; i++) { // Finds fibonacci sequence
a = b;
b = c;
c = a + b;
if ( c % 2 == 0) { // Check if it's even
int sum = 0;
sum = sum + c;
System.out.println(sum);
}
else {
}
}
}
}
答案 0 :(得分:6)
每次循环内部都不应重新初始化sum
,因为这会导致它丢失它所具有的值。它的范围应该在if
之外,这样每次都可以增加相同的变量。
class driver {
public static void main(String [] args) {
int a;
int b = 0;
int c = 1;
int sum = 0;
for (int i = 0; i < 10; i++) { // Finds fibonacci sequence
a = b;
b = c;
c = a + b;
if (c % 2 == 0) // Check if it's even
sum += c;
}
System.out.println(sum);
}
}
答案 1 :(得分:2)
public static void main(String [] args) {
int a;
int b = 0;
int c = 1;
int sum = 0;
for (int i = 0; i < 10; i++) { // Finds fibonacci sequence
a = b;
b = c;
c = a + b;
if ( c % 2 == 0) { // Check if it's even
sum += c;
}
}
System.out.println(sum);
}
你最初每次设置sum = 0'c'是偶数。此代码仅在进程开始之前作为sum = 0使用。这实际上是一个常见的错误,但你很快就会发现这是一个坏主意。
您知道,我将System.out.println(sum)语句放在循环之外,因此您没有10个不同的数字作为输出。
答案 2 :(得分:1)
在for循环外声明整数变量sum。应该这样做。
答案 3 :(得分:1)
public final class eu_p002_sol {
public static void main(String[] args) {
System.out.println(new eu_p002_sol().run());
}
public String run() {
int sum = 0;
for (int x = 0; ; x++) {
int fib = fibonacci(x);
if (fib > 4000000)
break;
if (fib % 2 == 0)
sum += fib;
}
return Integer.toString(sum);
}
private static int fibonacci(int n) {
if (n < 0 || n > 46)
throw new IllegalArgumentException();
int a = 0;
int b = 1;
for (int i = 0; i < n; i++) {
int c = a + b;
a = b;
b = c;
}
return a;
}
}
试试这个
答案 4 :(得分:0)
也许有人还在寻找正确的答案:
static int sum = 0, seq = 0;
public static void main(String[] args) {
fib(1,2);
}
static void fib(int i, int j) {
seq = j;
if (seq <= 4000000) {
if (j % 2 == 0) {
sum += j;
}
fib(j, i + j);
} else {
System.out.println(sum);
}
}