遞迴(Recursion):函數本身又可以呼叫自己的副程式。
※遞回函數-撰寫程式時,可以處理程序且將程式模組化為ㄧ支獨立的函數,如果此函數可以反覆自己呼叫自己。
遞迴函數種類:
◎直接(Direct)遞迴:程序自己直接呼叫自己
◎間接(Indirect)遞迴:兩個以上函數,彼此呼叫對方,形成迴路
遞迴實務上應用:
◎計算n階乘(n!)
說明:
1. 遞迴函數必須要設定初值和終值
2. 遞迴和數必須要有更新值
3. 遞迴函數必須要自己呼叫自己
◎費氏數列
說明:
1. 某一數為其前兩個數的和
◎河內塔的圓盤搬移過程
說明:
1. 先將上面n-1個盤子搬到另一柱子
2. 再將最大的盤子搬至目的地
3. 將剩下的n-1個盤子搬至目的地
◎二項係數
※遞回與非遞迴
遞迴優點
◎程式較簡潔
◎表達力較強
◎區域變數與暫存變數較少
遞迴缺點
◎執行時參數的存取較費時間
◎需額外堆疊空間支援
非遞迴優點
◎較節省執行的時間
◎不須額外的堆疊空間
非遞迴缺點
◎程式較長
◎表達力較弱
◎區域變數與暫存變數較多