算法5個特征:
1.有窮性:保證執行優先步驟之后結束
2.確切性:每一步驟都有確切的定義
3.輸入:每個算法有零個或多個輸入
4.輸出:每個算法有一個或多個輸出
5.可行性:原則上算法能夠精確地運行,進行有限次運算后即可完成一種運算
計算機算法可分為兩大類:
1.數值運算算法:求解數值
2.非數值運算算法:事務管理領域
算法流程圖:1.順序結構 2.選擇結構(也成分支結構) 3.循環結構(當型循環、直到型循環)
算法思想8種:枚舉、遞推、遞歸、分治、貪心、試探法、動態迭代、模擬
1.枚舉算法
枚舉算法思想:將問題的所有可能的答案一一列舉,然后根據條件判斷此答案是否合適。保留合適的,丟棄不合適的。
解題思路:(1)確定枚舉對象、枚舉范圍和判定條件(2逐一列舉可能的解,驗證每個解是否是問題的解
枚舉算法步驟:(1題解的可能范圍,不能遺漏任何一個真正解,也要避免有重復(2判斷是否是真正解的方法(3使可能解的范圍降至最小,以便提高解決問題的效率
實例一:百錢買百雞

實例二:填寫運算符
2.遞推算法思想
(1 順推法 :從已知條件出發,逐步推算出要解決問題的方法。例如斐波那契數列
(2 逆推法 :從已知的結果出發,用迭代表達式逐步推算出問題開始的條件,即順推法的逆過程。
實例一【斐波那契數列】:兔子數列。兔子在出生兩個月后,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,一年以后而已繁殖多少對兔子?

實例二【逆推算法】:銀行存款。母親為兒子小sun 4 年的大學生活准備一一筆存款,方式是整存零取,規定小Sun每月月底取下一個月的生活費。現在假設銀行的年利息為1.71%,請編寫程序,計算母親最少需要存入多少錢?

3.遞歸算法思想
遞歸算法特點:(1 遞歸過程一般通過函數或子過程來實現 (2 遞歸算法在函數或子過程的內部,直接或者間接地調用自己的算法 (3 遞歸算法實際上是把問題轉化為規模縮小的同類問題的子問題,然后再遞歸調用函數或過程來表示問題的解。
注意:(1 遞歸是在過程或函數中調用自身的過程。(2 在使用遞歸策略時,必須有一個明確的遞歸結束條件,這稱為遞歸出口 (3 遞歸算法通常顯得很簡潔,但是運行效率較低,所以一般不提倡用遞歸算法設計程序 (4 在遞歸調用過程中,系統用棧來存儲每一層的返回點和局部量。如果遞歸次數過多,則容易造成棧溢出,所以一般不提倡用遞歸算法設計程序
實例一:漢諾塔。寺院里有3根柱子,第一根有64個盤子,從上往下盤子越來越大。方丈要求小和尚A把這64個盤子全部移動到第3根柱子上。在移動的時候,始終只能小盤子壓着大盤子,而且每次只能移動一個。[http://demo.sucaihuo.com/2215/]

事例二:階乘。自然數由1~n的n個數連乘積叫做n的階乘,記作n!

4.分治算法思想
分治算法解題步驟:(1 分解:將要解決的問題划分成若干個規模較小的同類問題 (2求解:當子問題划分得足夠小時,用較簡單的方法解決 (3合並:按原問題的要求,將子問題的解逐層合並構成原問題的解
實例一:大數相乘。指計算兩個大數的積。假如計算123*456的結果
