天天看點

遞歸|學習筆記

開發者學堂課程【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