初學者剛接觸遞迴,就會寫遞迴(recursive)函數,通常都是同儕中的佼佼者,要寫遞迴,需要清楚的邏輯思緒,因此大都屬於進階課程。 【重點整理】 1.所謂遞迴,就是在函數內,重複使用函數本身的方式。 2.遞迴需具備兩個主要因素: A.若遞迴函數為 f(n),則 f(n) 與 f(n-1) 有何關係? B.在重複呼叫本身函數時,何時才能停止呼叫? 3.遞迴優點: A.對於複雜問題,程式碼較為精簡。 B.程式碼可讀性高。 C.函數內使用變數較少。 4.遞迴缺點: A.因為要重複呼叫函數,所以比較費時。 B.每呼叫一次函數,必定耗費一些堆疊空間,造成多餘的記憶體使用量。 5.為了避免太多參數,造成堆疊空間浪費,若函數運行中,不會改變的參數請盡量使用全域性參數。 C.學習不易,初學者不容易上手。 【常見範例】 1.最簡單的等差級數和 1+2+3+...+N 2.等差級數和 3.等比級數和 4.計算 N! 5.計算 Xn 6.最大公因數 7.費氏數列 8.計算 12+22+32+...+n2 9.反向輸出文字 10.反向計算數值 11.漢諾易塔 |