递归函数

内容目录                        

初识递归            

递归函数与三级菜单         

递归函数与二分法查找        

 

初识递归          

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

递归的最大深度——997

def fon(n):
    print(n)
    n += 1
    fon(n)
fon(1)
测试递归最大深度
import sys
print(sys.setrecursionlimit(100000))
修改递归最大深度

 

递归函数与三级菜单      

menu = {
    '水果':{'西瓜':
              {'西瓜皮':{},'西瓜肉':{}},
            '杨梅':
                {'杨梅皮':{},'杨梅肉':{}}},
    '植物':{'杨树':
              {'杨树叶':{},'杨树皮':{}},
            '杨柳':
              {'杨柳枝':{},'杨柳皮':{}}},
    '花卉':{
        '牡丹花':{
            '牡丹花皮':{},'牡丹花蕾':{}
        },}}
def dic1(dic):
    while 1:
        for i in dic:print(i)
        key = input('请输入你的选择:').strip()
        if key == 'b' or key == 'q':return key
        elif key in dic.keys() and dic.keys():
            ret = dic1(dic[key])
            if ret == 'q':return 'q'
        elif (not dic.get(key)) or (not dic[key]):continue
dic1(menu)
递归实现
lis = [menu]
while lis:

    for i in lis[-1]:print(i)
    key = input('请输入你的选择:').strip()
    if key in lis[-1] and lis[-1][key]:
        lis.append(lis[-1][key])
    if key == 'b':
        lis.pop()
    if key == 'q':
        break
堆栈实现

 

 

 

递归函数与二分法查找      

#二分法查找
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]

def find(l,aim,start = 0,end = None):
    end = len(l) if end is None else end
    mid_index = (end - start)//2 + start
    if start <= end:
        if l[mid_index] < aim:
            return find(l,aim,start =mid_index+1,end=end)
        elif l[mid_index] > aim:
            return find(l, aim, start=start, end=mid_index-1)
        else:
            return mid_index
    else:
        return '找不到这个值'

ret= find(l,42)
print(ret)

 

posted @ 2019-09-07 14:43  supreme_me  阅读(76)  评论(0)    收藏  举报