这就是问题:
Fibonacci序列中的每个新术语都是通过添加 前两个任期。从1和2开始,前10个术语将 be:1,2,3,5,8,13,21,34,55,89,...考虑中的条款 发现,斐波那契序列的值不超过四百万 偶数项的总和。
当我运行下面的程序时,它给了我
-1833689714
有人可以帮我解决问题吗?
=============================================== =========================
#include <iostream>
using namespace std;
int fibona (int k);
int first = 0 , second = 1 , fibo = 0, sum = 0;
int main()
{
cout << "Sum of even values less than 4000000 : " ;
fibona (4000000);
}
int fibona (int k)
{
for (int c = 0 ; c < k ; c++)
{
if (c <= 1)
{
fibo = c;
}
else
{
fibo = first + second;
first = second;
second = fibo;
}
if (fibo % 2 == 0)
{
sum += fibo;
}
}
cout << sum <<endl;
}
答案 0 :(得分:0)
你知道((1+Sqrt[5])/2)^4000000/Sqrt[5] = 1.627477... × 10^835950
多少钱?
必须大约
#include <iostream>
using namespace std;
long fibona_even_sum (long k);
int main()
{
const long N=4000000;
cout << "Sum of even Fibonacci numbers: " <<endl;
cout << fibona_even_sum(N) <<endl;
}
long fibona_even_sum(long N_max)
{
long first = 0 , second = 1;
long sum=0;
while(true)
{
long first_copy=first;
first=second;
second+=first_copy;
if(second>N_max)
return sum;
if(!(second%2))
sum+=second;
}
}
没有办法让它适合任何变量类型。
long
在上面的代码中,您可以将所有int
更改为{{1}}。它工作正常。