一、初识递归
递归的定义:在一个函数里在调用这个函数本身
递归的最大深度--- 997 1 def func(n): 2 print(n) 3 n += 1 4 func(n) 5 func(1)
修改默认值 1 import sys 2 print(sys.setrecursionlimit(100000))
二、递归实例
alex老师多大了?我说我不告诉你,但alex比 egon 大两岁。
你想知道alex多大,你是不是还得去问egon?egon说,我也不告诉你,但我比武sir大两岁。
你又问武sir,武sir也不告诉你,他说他比金鑫大两岁。
那你问金鑫,金鑫告诉你,他40了。。。
这个时候你是不是就知道了?alex多大?
1 def age(n): 2 if n == 1: 3 return 40 4 else: 5 return age(n-1)+2 6 7 print(age(4))
三、二分查找法
# 查找算法
# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# 从有序的列表中查找值66的位置
# 方法一: 循环 # 5000000 4999999
# 方法二: l.index(66) #最正确的方法
# 方法三: 递归
1 def find(l,aim,start=0,end=None): 2 if end == None:end = len(l)-1 3 if start <= end: 4 mid = (end - start) // 2 + start 5 if l[mid] > aim: 6 return find(l,aim,start=start,end = mid-1) 7 elif l[mid] < aim: 8 return find(l,aim,start=mid+1,end=end) 9 elif l[mid] == aim: 10 return mid 11 else: 12 return None 13 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 14 print('ret :',find(l,18))