另外,本課程的**請戳這裡。
遞迴不是「先有雞還是先有蛋的問題」,也不是「從前有座山,山里有座廟…」,嚴格來說,遞迴應該不是演算法設計,而是演算法實現範疇的內容,因為它並不屬於任何一種演算法模式。作為演算法實現的一種常用形式,遞迴程式常常讓新手望而卻步。難在兩點,其一是相對於順序執行的線性**或重複執行的迴圈**,遞迴程式不是很容易在腦子裡形成**流程,分析**的時候,常常在幾層遞迴呼叫之後,就記不得各層遞迴呼叫的上下文環境了;其二是遞迴程式設計比較困難,新手常常感覺無從下手。這一課,我就從遞迴程式的分析方面分享一些我的經驗。
分析遞迴程式,不要像分析迴圈或線性程式**那樣,直接帶入上下文環境進行死算,因為這樣很容易迷失在**細節中,只見樹木、不見森林,最後都記不得哪一層引數是哪一層的上下文環境了。遞迴體現的是類似與「以此(方法)類推」或「以同樣的操作模式(步驟)重複…」這樣的思想(有點類
第48課 函式設計原則(完結)
1.函式從意義上應該是乙個獨立的功能模組 2.函式名要在一定程度上反映函式的功能 3.函式引數要能夠體現引數的意義 4.盡量避免在函式中使用全域性變數 5.當函式引數不應該在函式體內部修改時,應加上const宣告 6.如果引數是指標,且僅作輸入引數,則應加上const宣告 7.不能省略返回值的型別 ...
第38課 邏輯操作符的陷阱
1.1 運算元只有兩種值 true和false 1.2 邏輯表示式不用完全計算就能確定最終值 1.3 最終結果只能是true或false 邏輯表示式 又叫短路表示式 include using namespace std int func int i int main else cout endl ...
第26課 靜態成員函式
未完成的需求 統計在程式執行期間某個類的物件數目 保證程式的安全性 不能使用全域性變數 隨時可以獲取當前物件的數目 failure 假設程式中沒有test物件,你就無法獲取當前物件的數目。因為在上乙個程式中是使用物件去呼叫成員函式的,此時如果沒有物件,如何去呼叫呢?解決方案1 include cla...