
*****
## 如何理解“遞歸”
遞歸是一種應用非常廣泛的算法(或者編程技巧)。之后我們要講的很多數據結構和算法的編碼實現都要用到遞歸,比如 DFS 深度優先搜索、前中后序二叉樹遍歷等等。所以,搞懂遞歸非常重要,否則,后面復雜一些的數據結構和算法學起來就會比較吃力。
### 遞歸需要滿足的三個條件
剛剛這個例子是非常典型的遞歸,那究竟什么樣的問題可以用遞歸來解決呢?我總結了三個條件,只要同時滿足以下三個條件,就可以用遞歸來解決。
- 一個問題的解可以分解為幾個子問題的解
- 這個問題與分解之后的子問題,除了數據規模不同,求解思路完全一樣
- 存在遞歸終止條件
## 練習
* 用遞歸的方式輸出l=\['jack',('tom',23),'rose',(14,55,67)\] 列表內的每一個元素
```
def dp(s):
if isinstance(s,(int,str)):
print(s)
else:
for item in s:
dp(item)
l=['jack',('tom',23),'rose',(14,55,67)]
dp(l)
```