python基礎程式設計 遞迴

2021-10-11 06:00:32 字數 1584 閱讀 8868

遞迴的通俗理解:遞迴就是在函式內部呼叫自己的函式被稱之為遞迴

def

recursion

(n):

v = n//

2# 地板除,保留整數

print

(v)# 每次求商,輸出商的值

if v ==0:

''' 當商為0時,停止,返回done'''

return

'done'

v = recursion(v)

# 遞迴呼叫,函式內自己呼叫自己

recursion(10)

# 函式呼叫

執行結果:52

10

1、必須有乙個明確的結束條件

2、每次進入更深一層遞迴時,問題規模(計算量)相比上次遞迴都應有所減少

3、遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)

1.遞迴求階乘之和

1!+2!+3!+4!+5!+…+n!

def

factorial

(n):

if n ==1:

return n # 階乘為1的時候,結果為1,返回結果並退出

v = n*factorial(n-1)

return v # 返回結果並退出

sum=

0for i in

range(1

,6):

print

(i)sum

=sum

+factorial(i)

# 函式呼叫

print

(sum

)

執行結果:12

345階乘之和:153

2.遞迴推斐波那契數列

1,1,2,3,5,8,13,21,34,55,試判斷數列第十五個數是哪個?

def

fabonacci

(n):

if n <=2:

return

1 n = fabonacci(n-1)

+ fabonacci(n-2)

return n

print

("%d"

% fabonacci(15)

)

執行結果:

610

3.使用遞迴方法讓字串翻轉

def

rvs(s)

:if s =="":

return s

else

:return rvs(s[1:

])+s[0

]print

(rvs(

"12345"

))

執行結果:

54321

``

python基礎 遞迴

迭代 deffactorial n result 1 for i in range 2,n 1 result i return result factorial 1 1 factorial 5 120 factorial 10 3628800 遞迴 deffactorial n if n 1 ret...

python 基礎 模組 遞迴 )

模組 是乙個命名空間,也是乙個模組物件 補充 容器 資料的封裝 函式 語句的封裝 類 方法和屬性的封裝 含義 模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被別的程式引入,以使用該模組中的函式等功能。這也是使用 python 標準庫的方法。模組就是程式 作用 1封裝 2實現 ...

Python基礎 遞迴函式

通俗一點來說在函式的內部,直接去呼叫其他函式的方式叫做函式的巢狀.但是,如果這個函式呼叫的是自身呢?這個樣子的函式自身就屬於遞迴函式 經典例項 階乘自身就能用遞迴函式來表達出來 1 1 2 2 1 3 3 2 1 n n n 1 2 1以上是簡單直接說明了階乘的表達,接下來至二級用函式來進行直接表達...