2 p499166435 p499166435 于 2014.03.06 21:20 提问

C++ long long类型 能存储的 Fibonacci数列中的最大值

#include
#include
#include "MTime.h"

using namespace std;

long long _fibonacci(int i)
{
if (i == 0)
return 0;

if (i == 1)
    return 1;

return _fibonacci(i-2) + _fibonacci(i-1);

}

int main()
{
ofstream out("fibonacci.txt");

int i = 3; 
long long maxNum = 0;   
long long num = 1;
int useTime;

while (maxNum < num)
{
    MTime start;

    maxNum = num;
    num = _fibonacci(i++);

    MTime end;
    useTime = end.delta(&start);
}

out << "Fibonacci数列中" << endl
    << "能用long long数据类型存储的" 
    << "最大数是第 " << i-1 << " 个数" << endl
    << "这个数是 " << maxNum << endl
    << "计算出这个数用时 " << useTime << " 秒" <<endl;
cout << "Fibonacci数列中" << endl
    << "能用long long数据类型存储的" 
    << "最大数是第 " << i-1 << " 个数" << endl
    << "这个数是 " << maxNum << endl
    << "计算出这个数用时 " << useTime << " 秒" <<endl;

system("pause");

return 0;

}

我算是一个C++初学者吧,上面程序是我自己写的。我运行它,一个晚上过去了还是没结果。貌似无限循环了。下班回来用F10测试,发现在“i==40”时还能正常进行,当运行到“i==41”时就一直等待了。我一再检查程序没发现问题出在哪儿。求大神解惑~~~
另:我在将long long 类型用unsigned char类型替代时程序能正常运行且很快得出结果!
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!