1. 程式人生 > >函數遞歸與二分法(python3入門)

函數遞歸與二分法(python3入門)

exist urn 所有 TTT 結束 導出 兩個 return def

 1 import sys
 2 
 3 print(sys.getrecursionlimit())  # 查詢遞歸保護限制次數
 4 
 5 # 函數遞歸:在調用函數的過程中又 直接或者間接的調用該函數本身,稱之為函數的遞歸調用
 6 
 7 # 函數遞歸必須滿足:
 8 # 1 必須有一個明確的結束條件
 9 # 2 每進入下一層遞歸,問題的規模都應該有所減少
10 
11 # 由上述兩個條件可以推導出遞歸應該有兩個明確的階段:
12 # 1 回溯:一層一層的遞歸調用下去
13 # 2 遞推:在某一層結束掉遞歸,開始往回一層層的返回
14 
15 
16 # 遍歷打印li1的所有值
17
li1 = [1, [2, [3, [4, [5, [6, [7, ]]]]]]] 18 19 20 def test(a): 21 for i in a: 22 if type(i) is list: 23 return test(i) 24 print(i) 25 26 27 test(li1) 28 29 30 # 在nums列表中尋找自定義的值(使用二分法) 31 nums = [11, 13, 21, 31, 43, 101, 221, 302, 339, 443] 32 33 34 def ttt(l, find_num):
35 n = len(l) // 2 36 if l is not None: 37 return print(not exist) 38 if l[n] > find_num: 39 print(這個值太大了,值應該在左邊) 40 ttt(l[:n], find_num) 41 42 elif l[n] < find_num: 43 print(這個值太小了,值應該在右邊) 44 ttt(l[n + 1:], find_num) 45 else: 46 print
(就是這個值) 47 print(l[n]) 48 49 50 ttt(nums, find_num=444) 51 52 53 #有5個人,第一個說比第二個大兩歲,第二個說比第三個大兩歲,以此類推,第五個說‘我是18歲‘,求第一個人的年齡 54 def age(n): 55 if n == 1: 56 return 18 57 return age(n-1)+2 58 59 res = age(5) 60 print(res)

函數遞歸與二分法(python3入門)