请查看以下代码
package Euler;
import java.util.ArrayList;
import java.util.List;
public class Problem2
{
public static void main(String[]args)
{
int firstNumber=1;
int secondNumber=2;
int thirdNumber = 0;
int sum = 0;
List array = new ArrayList();
while(true)
{
if(thirdNumber>=400000)
{
break;
}
else
{
thirdNumber = firstNumber+secondNumber;
System.out.println(thirdNumber);
if(thirdNumber%2==0)
{
array.add(thirdNumber);
}
firstNumber = secondNumber;
secondNumber = thirdNumber;
}
}
for( int i=0;i<array.size();i++)
{
int num = Integer.parseInt(array.get(i).toString());
sum = sum+num;
}
System.out.println("The Sum is: "+sum);
}
}
在这里,我试图解决this问题,来自Project Euler,无论如何这都是问题。
Fibonacci序列中的每个新术语都是通过添加 前两个任期。从1和2开始,前10个术语将 是:
1,2,3,5,8,13,21,34,55,89,......
考虑Fibonacci序列中的值,而不是 超过四百万,找到偶数值的总和。
这是我得到的答案 - 257112;
它说答案是对的。我不知道为什么会这样。为了您的信息,我的母语不是英语,我也没有用英语做数学。所以我怀疑我是否误解了这个问题。
请帮我找到解决此问题的正确方法。感谢
答案 0 :(得分:7)
考虑Fibonacci序列中的值,其值不超过四百万......
这里有一个问题:
if(thirdNumber>=400000)
那不是四百万。你还需要一个零。
答案 1 :(得分:0)
你可以通过
提高效率尝试
long a = 1, b = 1, c, sum = 0;
while ((c = a + b) < 4000000) {
sum += c;
a = b + c;
b = c + a;
}
System.out.println(sum);