python中递归题

二分查找

 1 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]
 2 def find(l, aim, start = 0, end = None):
 3     end = len(l) if end is None else end
 4     mid_num = (end - start) // 2 + start
 5     if start > end:
 6         if aim > l[mid_num]:
 7             return find(l, aim, start = mid_num + 1, end = end)
 8         elif aim < l[mid_num]:
 9             return find(l, aim, start = start, end = mid_num - 1)
10         else:
11             return mid_num
12     else:
13         return '无此数'
14 print(l[12])
15 print(find(l,44))
16 # 41
17 # 无此数

三级菜单

 1 menu = {
 2     '北京': {
 3         '海淀': {
 4             '五道口': {
 5                 'soho': {},
 6                 '网易': {},
 7                 'google': {}
 8             },
 9             '中关村': {
10                 '爱奇艺': {},
11                 '汽车之家': {},
12                 'youku': {},
13             },
14             '上地': {
15                 '百度': {},
16             },
17         },
18         '昌平': {
19             '沙河': {
20                 '老男孩': {},
21                 '北航': {},
22             },
23             '天通苑': {},
24             '回龙观': {},
25         },
26         '朝阳': {},
27         '东城': {},
28     },
29     '上海': {
30         '闵行': {
31             "人民广场": {
32                 '炸鸡店': {}
33             }
34         },
35         '闸北': {
36             '火车战': {
37                 '携程': {}
38             }
39         },
40         '浦东': {},
41     },
42     '山东': {},
43 }
44 def threeLM(dic):
45     while True:
46         for k in dic:print(k)
47         key = input('input>>').strip()
48         if key == 'b' or key == 'q':return key
49         elif key in dic.keys() and dic[key]:
50             ret = threeLM(dic[key])
51             if ret == 'q': return 'q'
56
threeLM(menu)
 

斐波那契数列

1 def fib(n):
2     if n == 1 or n ==2:
3         return 1
4     else:
5         return fib(n-1) + fib(n - 2)
6 print(fib(6))
7 # 8

猜你喜欢

转载自www.cnblogs.com/rcat/p/9434490.html