開發者學堂課程【Python 語言基礎 3:函數、面向對象、異常處理:遞歸】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/601/detail/8732遞歸
目錄:
一 遞歸簡介
二 遞歸的定義
三 遞歸式函數的兩個要件
四 範例
五 練習
一·遞歸簡介
遞歸是解決問題的一種方式,它和循環很像
它的整體思想是,将一全大問題分解為一個個的小問題,直到問題無法分解時,再去解決問題。
二·遞歸的定義
遞歸式的函數
從前有座山,山裡有座廟,廟裡有個老和尚講故事,講的什麼故事呢?
從前有座山,山裡有坐廟,廟裡有個老和尚講故事,講的什麼故事呢?遞歸簡單了解就是自己去引用自己!
遞歸式函數,在函數中自己調用自己!
無窮遞歸,如果這個函數被調用,程式的記憶體會溢出,效果類似于死循環
def fn():
fn()
fn()
三·遞歸式函數的兩個要件
1.基線條件
問題可以被分解為的般小問題,當滿足基線條件時,遞歸就不在執行了
2.遞歸條件
将問題繼續分解的條件
遞歸和循環類似,基本是可以互相代替的
循環編寫起來比較容易,閱讀起來稍難
10!=10*9!
9!=9*8!
8!=8*7!
...
1!=1
def factorial(n):
...
該函數用來求任意數的階乘
參數:
n 要求階乘的數字
...
基線條件 判斷 n 是否為1,如果為 1 則此時不能再繼續遞歸
if n ==1
1 的階乘就是 1,直接傳回 1
return 1
遞歸條件
return n*factorial(n 1)
print(factorial(10))
四、範例:
嘗試求 10 的階乘 (10!)
1!
=
1
2!=1*2
=
2
3!=1*2*3=
6
4!
=
1*2*3*4=24
print(1*2*3*4*5*6*7*8*9*10)
建立一個變量儲存結果
n=10
for i in range(1,10)
n*= i
print(n)
建立一個函數,可以用來求任意數的階乘
def factorial(n):
...
...
result
=
n
for i in range(1,10):
result
= i
r
esult
result
求 10 的階乘
print(factorial(20))
五·練習
1.建立一個函數 power 來為任意數字做幂運算 n**i
2.建立一個函數,用來檢查一個任意的字元串是否是回文 (字元串,如果是傳回True,否則傳回 False
回文字元串,字元串從前往後念和從後往前念是一樣的
Abcba