#include <bits/stdc++.h>
using namespace std;
int fib(int n){
if(n==1) return 1;
if(n==2) return 1;
return fib(n-1)+fib(n-2);
}
int main()
{
int n; cin>>n;
cout<<fib(n)<<endl;
return 0;
}
代碼輸出時間太長,應該怎么改進?
uj5u.com熱心網友回復:
unsigned long long ffib(int n)
{
if(n < 1) return 0;
if(n < 3) return 1;
if (n & 1) return --n /= 2, ffib(n + 1) * ffib(n + 1) + ffib(n) * ffib(n);
return n /= 2, ffib(n) * (ffib(n + 1) * 2 - ffib(n));
}
可以秒算到n=93,再大結果就溢位了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37696.html
標籤:基礎類
上一篇:fortran呼叫c++子程式
下一篇:求大神代碼
