遞迴演算法的時間複雜度分析

2021-08-20 16:34:50 字數 779 閱讀 2029

大家都知道,如果乙個問題的求解可以通過求解子問題來求解,那麼這種問題就可以用遞迴的思路去求解。遞迴的好處,**簡單易懂,但同時也有個致命的缺點,時間複雜度高,如果n很大的情況下,通常是無法在規定時間內算出問題的答案的。通過斐波那契數列,來學習一些這個問題。

1,斐波那契數列的表示式:

fibonacci數列簡介:

f(1)=1

f(2)=1

f(n)=f(n-1)+f(n-2)    (n>2)

(1)斐波那契數列的遞迴演算法思想描述:利用遞迴思想,每次計算當前的值時候,就要引用之前的兩個值,一步一步的遞迴,一直到最起始處,才能用到f(1)和f(2)。

遞迴演算法程式:

int recursive_method(int n)

(2)遞迴演算法呼叫的順序舉例子

在遞迴呼叫過程中fib(3)被計算了2次,fib(2)被計算了3次。fib(1)被呼叫了5次,fib(0)中被呼叫了3次。所以,遞迴的效率低下,但優點是**簡單,容易理解。

(3)遞迴演算法時間複雜度為:o(2^(n/2))<=t(n)<=o(2^n)。

2,斐波那契的非遞迴演算法

int non_recursive_method(int n)  

return a3;

} }

非遞迴演算法時間複雜度為:o(n)。

遞迴演算法時間複雜度分析

一般情況下,演算法中基本操作重複的次數就是問題規模n的某個函式f n 進而分析f n 隨n的變化情況並確定t n 的數量級。這裡用 o 來表示數量級,給出演算法時間複雜度。t n o f n 它表示隨問題規模n的增大,演算法的執行時間增長率和f n 增長率成正比,這稱作演算法的漸進時間複雜度。而我們...

遞迴演算法的時間複雜度分析

在演算法分析中,當乙個演算法中包含遞迴呼叫時,其時間複雜度的分析會轉化為乙個遞迴方程求解。實際上,這個問題是數學上求解漸近階的問題,而遞迴方程的形式多種多樣,其求解方法也是不一而足,比較常用的有以下四種方法 1 代入法 substitution method 代入法的基本步驟是先推測遞迴方程的顯式解...

遞迴演算法的時間複雜度分析

在演算法分析中,當乙個演算法中包含遞迴呼叫時,其時間複雜度的分析會轉化為乙個遞迴方程求解。實際上,這個問題是數學上求解漸近階的問題,而遞迴方程的形式多種多樣,其求解方法也是不一而足,比較常用的有以下四種方法 1 代入法 substitution method 代入法的基本步驟是先推測遞迴方程的顯式解...