1.1本書討論的內容
1.2數學知識的複習
1.3遞迴簡論
了解程式在適當輸入和巨大
輸入時的差別,明白優化代
碼採取適當資料結構的重要
指數、對數、級數、模運
算、歸納法反證法證明
指在函式的定義中使用
函式自身的方法,還較常
用於描述以自相似方法
重複事物的過程。也可
以理解為自我複製的過程。
在數學上,費波那契數列是以遞迴的方法來定義:經過適當的分析,可以知道這個問題是屬於斐波那契數列,可以用遞迴的思想解決。所謂遞迴演算法,就是一種直接或間接地呼叫原演算法本身的一種演算法。f_=0}
f_=1}
f_=f_+f_}(n≧2)
在設計遞迴演算法時要注意以下幾點:
* 每個遞迴演算法都必須有乙個非遞迴定義的初始值,作為遞迴結束標誌,或遞迴結束的出口。
* 在設計遞迴演算法時,要解決的問題須具有遞迴性。
* 雖然採用遞迴演算法解決問題,特別是一些複雜問題時非常方便且容易實現,但是遞迴演算法的執行效率較低,時間和空間複雜度都很高,因此對於一些對時間和空間複雜度要求較高的程式,建議使用非遞迴演算法設計。
運用遞迴設計的本題求解程式如下所示:
#include
int f(int n)
int main()
for(i=0;iprintf("%d\n",f(a[i]));
}return
0;}
可以發現當輸入的書稍微大一點是便會出現「tle」,可以改用迴圈的方法設計另一種程式。
可以改用迴圈的方法設計另一種程式。
#include
int f(int n)
else
for(i=1;ireturn result;
}int main()
for(i=0;iprintf("%d\n",f(a[i]));
}return
0;}
結果如下所示:
2.1 數學基礎
2.2 模型
2.3 要分析的問題
2.4 執行時間分析
資料結構 演算法和演算法分析
一 演算法的基本概念 1.什麼是演算法 演算法 演算法是對特定問題的求解步驟,是指令的有限序列。演算法的特徵 1 演算法有0或多個輸入 2 演算法至少有乙個輸出 3 演算法的每一條指令都可以執行 4 演算法的每一條指令都有確切的定義,沒有二義。5 演算法必須總能在執行有限步以後終止。2.演算法的描述...
資料結構(2) 演算法和演算法分析
資料結構與演算法之間存在著本質聯絡。演算法的定義及特性 演算法是為了解決某類為而規定的乙個有限長的操作序列。乙個演算法必須滿足一下五個重要特性。演算法的時間複雜度 一般情況下,演算法中基本語句重複執行的次數是問題規模n的某個函式f n 演算法的時間量度記作t n o f n 它表示雖問題規模n的增大...
資料結構與演算法分析 之 資料結構和演算法概述
官方解釋 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。大白話 資料結構就是把資料元素按照一定的關係組織起來的集合,用來組織和儲存資料 傳統上,我們可以把資料結構分為邏輯結構和物理結構兩大類。邏輯結構分類 邏輯結構是從具體問題中抽象出來的模型,是抽...