還在用遞歸來計算菲波那契數列?你Time Limit Exceeded了

但是,當你輸入46的時候,你會發現計算機在不停地運算,十多秒後終於給出了結果(可能在等待的過程中你以為程序出問題了),可想而知,超時了。但有沒有更快的方法呢?用數組吧!代碼如下:

#include 
using namespace std;
int main()
{
	int k;
	cin>>k;
	int Fi[47];
	Fi[0]=1,Fi[1]=1;	
	for(int i=2;i<=46;i++)
		Fi[i]=Fi[i-2]+Fi[i-1];
	cout<

當輸入46,結果馬上跳出來,是不是很快?有些問題只能用遞歸來解決,但不是所有的問題都要用遞歸來做,能不用遞歸的場合儘量不要用遞歸,因為計算時間太長。


分享到:


相關文章: