python之递归函数

一、初识递归

递归的定义:在一个函数里在调用这个函数本身

递归的最大深度--- 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))
View Code

 

posted @ 2018-02-26 15:29  WoLfff  阅读(179)  评论(0编辑  收藏  举报