22 python基礎11 遞迴函式

2022-08-12 15:27:13 字數 1437 閱讀 9093

1.定義:在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。

階乘例項

1 n = int(input(">>:"))

2 3

4 def f(n):

5 s = 1

6 for i in range(2, (n + 1)):

7 s *= i

8 return s

9 print(f(n))

遞迴

1 def factorial_new(n):

2 3 if n==1:

4 return 1

5 return n*factorial_new(n-1)

6 7 print(factorial_new(3))

遞迴函式的特點:

1 呼叫自身函式

2 有乙個明顯的結束條件,問題規模相比上次遞迴有所減少

優點: 定義簡單,邏輯清晰,所有的遞迴函式都可以寫成迴圈的方式,但是迴圈的邏輯不如遞迴清晰。

但是,遞迴的效率不高,遞迴層次過多會導致棧溢位,大概1000層。

1 def fibnum(n):          #斐波那契數列

2 a, b = 0, 1

3 for i in range(n):

4 b, a = a+b, b

5 return b

6 n = int(input(">>:"))

7 if n == 1:

8 print(0)

9 elif n == 2:

10 print(1)

11 else:

12 print(fibnum(n-2))

用遞迴寫

1 def fibo(n):

2 before = 0

3 after = 1

4 if n == 0 or n == 1:

5 return n

6 7 if n <= 3:

8 return 1

9 return fibo(n-1)+fibo(n-2)

10 11 print(fibo(3))

遞迴效率低,當數字過大時,會很慢

import sys

print(sys.getrecursionlimit())

#1000

sys.setrecursionlimit(10000)

print(sys.getrecursionlimit())

#10000

22 Python基礎學習筆記1

練習題 1.簡述編譯型與解釋型語言的區別,且分別列出你知道的哪些語言屬於編譯型,哪些屬於解釋型 編譯型語言 就好比一本教科書,不管用到哪乙個知識點,編譯型語言首先做的就是先將整本書所涉及的知識點都解釋一遍。比如輸入一串命令,先標準輸入,然後根據編譯環境去找到翻譯內容,傳給計算機,最後cpu處理 解釋...

2017 11 19以及22Python 學習筆記

迴圈語句 for i in range 執行的次數 比如 for i in range 10 迴圈十次 簡單的溫度轉換程式 tempconvert.py val input 請輸入帶溫度表示符號的溫度值 例如 32c if val 1 in c c f 1.8 float val 0 1 32 pr...

22 python資料序列(集合)

說實話,我也不知道該如何引入集合這個概念。在我沒有學習python之前,集合在我的腦海裡一直是乙個數學概念,對比與python當中的集合其實也差不了多少。總而言之,記住集合的特點就行,一方面其物理結構與邏輯結構不一致,他是無序的,另一方面,集合具有去重功能 兩種方式建立乙個集合,第一種是運用 第二種...