【发布时间】:2014-01-26 07:02:49
【问题描述】:
#include <iostream>
#include <math.h>
#include <iomanip>
int main(int argc, const char * argv[])
{
register double j = 1, i = 0, sum=0, sum2 = 0;
std::cout.setf(std::ios::fixed);
for (register double c=1; sum=i+j,i=j,j=sum,c<1000; ++c)
floor(fmod(sum,2))==0?sum2+=sum:0;
std::cout << std::setprecision(0) << sum2;
return 0;
}
我在终端上获得了惊人的巨大价值。我不知道出了什么问题。请帮忙。
【问题讨论】:
-
您是在尝试编写 C 还是 C++?你有一个 C 标签,但那是 C++ 代码。
-
为什么这些变量都是
double,为什么是register,为什么是?:而不是if,为什么你在循环测试中计算斐波那契数而不是body?跨度> -
因为您正在运行循环 1000 次。为什么你得不到巨大的价值?
-
取决于你所说的疯狂。它确实增长得相当快。 fib(5) = 5, fib(10) = 55, fib(15) = 610, fib(20) = 6765, ...
-
另外,您只需要在第一个偶数之后添加每个第三个 fib 数字,即 F(3)。甚至每隔 3 个位置就会出现一次小故障。