我正在尝试来自Project Euler.net的问题。我坚持的问题是这样的。
我想出了以下代码。
#include<iostream>
#include<cstdlib>
using namespace std;
int main() {
int a=1,b=1,c,sum=0;
while(c<4000000)
{
c=a+b;
if((c%2)==0)
sum+=c;
a=b;
b=c;
}
cout<<sum;
return 0;
}
返回的金额始终为zero
。我已经查看了StackOverflow上的其他解决方案,但我无法理解我的解决方案中的问题。任何帮助表示赞赏。
答案 0 :(得分:5)
在进入循环之前,您尚未初始化c
。如果它包含大于您的限制的内容,则循环将不会执行,并且在循环终止后sum
将保持0
。
答案 1 :(得分:0)
公共类示例{
public static void main(final String args[]) {
// fibno me even terms
int a = 0, b = 1;
int temp = 0;
// print fibo below 4 million
for (int i = 0; i <= 4000000; i++) {
int c = a + b;
// System.out.println(c);
if (c % 2 == 0)
{
temp = temp + c;
// System.out.println("Even" + c);
}
a = b;
b = c;
}
System.out.println("temp value is " + temp);
}
}