2016年9月19日 星期一

Recursion Algorithm

1.
一般來說,有兩種方式可以撰寫具有重覆執行 (Repetitive)特性的演算法:
Iteration (迴圈)
Recursion (遞迴)

Def: algorithm 中含有self-calling (自我呼叫)敘述存在。




2.遞迴的種類:
直接遞迴 (Direct Recursion):
函式或程序直接呼叫本身時稱之。

void function(void)
    {
     function(void);
     }

間接遞迴 (Indirect Recursion):
函式或程序先呼叫另外的函式,再從另外函式呼叫原來的函式稱之。

void function(void)
    {
     function1()
         void function1(void)
            {
              function();
             }
     }



3.遞迴演算法則的設計:
找出問題的終止條件 (即:base case).
找出問題本身的遞迴關係 (即:general case).
 Procedure 遞迴副程式名(參數)
{
  if (base case)
     return(結果); ……//達到終止條件時結束遞迴,需要時回傳結果
  else
     general case; ……//利用general case執行遞迴呼叫,需要時加上return
}