递归的含义:在一个函数里再调用这个函数本身,这就是递归。
在Python里递归的最大限度是997,最大递归的限度可以修改
import sys print(sys.setrecursionlimit(100000)
递归与三级菜单
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } def three(menu): while True: for i in menu: print(i) name = input('your name : ') if name in menu: three(menu[name]) elif name == 'q': break else: print('不存在的 ') continue three(menu)
二分位法 与递归
l = [2,4,5,7,8,9,12,13,14,15,17,18,19,23,25,27,29] def erf(l,num): mid = len(l)//2 if l[mid] > num: l = l[:mid] return erf(l,num) elif l[mid] < num: l = l[mid+1:] return erf(l,num) else: return l[mid] print(erf(l,18))
二分位法与递归进阶版本
l = [2,4,5,7,8,9,12,13,14,15,17,18,19,23,25,27,29] def erf(l,num,start= 0,end = 0): if start < end: mid = (start + end)//2 if l[mid] > num: end = mid return erf(l,num,start,end) elif l[mid] < num: start = mid + 1 return erf(l,num,start,end) else: return mid else: print('没有这个值!!') print(erf(l,25,start = 0,end = len(l)-1))
递归 与猜年龄
Alex 比egon 大2岁
egon 比袁浩大2岁
袁浩比哪吒大2岁
娜扎比太白大2岁
太白是40岁,请问Alex是多少岁?用递归函数表达
age1 = 40 age2 = nezha age3 = yuanhao age4 = egon age5 = alex def age(n): if n == 1: return 40 else: ret = age(n-1) return (ret +2) print(age(5))