函数递归与二分法(python3入门)
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)