1. 程式人生 > 其它 >演算法之棧與遞迴

演算法之棧與遞迴

(一)遞迴

若一個物件部分地包含它自己,或用它自己給自己定義,則稱這個物件是遞迴的。
若一個過程直接或者間接地呼叫自己,則稱這個過程是遞迴的過程(比如:遞迴求n的階乘)

一下三種情況常用到遞迴方法:
1.遞迴定義的數學函式
2.具有遞迴特性的資料結構
3.可遞迴求解的問題

 

遞迴——實際是分治法求解
分治法:對於一個叫為複雜的問題,能夠分解成幾個相對簡單的且解法相同或者類似的子問題來求解

必備的三個條件
1.能夠將一個問題轉變成一個新問題,而新問題與原問題的解法相同或類似,不同的僅是處理的物件,且這些處理物件是變化有規律的
2.可以通過上述轉化而使問題簡化
3.必須有一個明確的遞迴出口,或稱遞迴的邊界

void p(引數) {
    if(遞迴結束條件) 可直接求解步驟     // 基本項
    else p(較小的引數)                  // 歸納項
}