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 sysprint(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當中的集合其實也差不了多少。總而言之,記住集合的特點就行,一方面其物理結構與邏輯結構不一致,他是無序的,另一方面,集合具有去重功能 兩種方式建立乙個集合,第一種是運用 第二種...