用遞歸函數求斐波那契數列 求解斐波那契數列的時間復雜度,分別用遞歸和非遞歸方法?
求解斐波那契數列的時間復雜度,分別用遞歸和非遞歸方法?斐波那契數列無限數列1,1,2,3,5,8,13,21,34,55,。。。稱為斐波那契數列。它可以遞歸地定義為1 N=0f(N)=1 N=1f(N
求解斐波那契數列的時間復雜度,分別用遞歸和非遞歸方法?
斐波那契數列
無限數列1,1,2,3,5,8,13,21,34,55,。。。稱為斐波那契數列。它可以遞歸地定義為
1 N=0
f(N)=1 N=1
f(N-1)f(N-2)N>1
第N個Fibonacci數可以遞歸地計算如下:
int Fibonacci(INTN)
{
if(N
returnfibonacci(N-1)Fibonacci(N-2)]}
1 t(N-1)t(N-2)N>1
TN 0 N
時間復雜度為指數時間o(KN)
非遞歸計算如下:
int Fibonacci(int n)
{
if(n)]else{
int a=b=1
for(int i=0I
答:Fibonacci數列的遞歸算法是:在一個數列中,從第三項開始,每項的個數等于與之相鄰的前兩個術語。表示為:an 2=an 1,an(n≥1)]~]。讓我分別談談這些方法
雖然它們也是遞歸的,但是有不同的方法來編寫它們。例如,有兩種編寫方法
遞歸方法更直接。通過數組FIB[n]=FIB[n-1]FIB[n-2],直接遞歸方法是可以的。
可以通過以下公式直接求解,但缺點是可能會失去精度。
時間復雜度為O(log(n))。