python ==》 递归

1.什么叫递归?

答:递归就是一个函数内调用自己。

2.最大的递归层次?

答:997层

3.最大层数修改: 导入 个 import sys 模块。 (不建议修改)

4.递归,三级菜单。

menu = {
    '北京': {
        '海淀': {
            '五道口': {
                'soho': {},
                '网易': {},
                'google': {}
            },
            '中关村': {
                '爱奇艺': {},
                '汽车之家': {},
                'youku': {},
            },
            '上地': {
                '百度': {},
            },
        },
        '昌平': {
            '沙河': {
                '老男孩': {},
                '北航': {},
            },
            '天通苑': {},
            '回龙观': {},
        },
        '朝阳': {},
        '东城': {},
    },
    '上海': {
        '闵行': {
            "人民广场": {
                '炸鸡店': {}
            }
        },
        '闸北': {
            '火车战': {
                '携程': {}
            }
        },
        '浦东': {},
    },
    '山东': {},
}

menu

def my_menu(menu):
    while True:
        for key in menu:
            print(key)
        k = input ('>>>')
        if k in menu:
            my_menu(menu[k])
        elif k == 'back':
            break
my_menu(menu)
View Code

5.计算的方法

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):
    mid = len(l)//2
    if l[mid] > aim:
        new_l = l [:mid]
        return find(new_l,aim)
    elif l [mid] < aim:
        new_l = l[mid+1:]
        return find(new_l,aim)
    else:
        return l[mid]
print(find(l,66))
View Code

6.一个数,除2到不能整除2为止。

def cal(num)
    if num % 2 ==0
        num = num //2    
        return cal (num)
    else: 
        return num
print(cal(7))
View Code

7.找位置。

#4.找到索引位置
list = [2,3,5,10,15,16,18,22,26]

def find(l,aim,start,end):   #列表,目标值,开始,结束)
    mid = (end+start) // 2   #  mid 等于  4   #2次: 5+8/2=6
    if start < end:
        if l[mid] > aim:   # 15   17   #相比较   #2次:  18  17
            end = mid - 1   #end = 6-1=5
            return find (l,aim,start,end)
        elif l[mid] < aim:    # 15   17  相比较
            start = mid +1   # start = 5t
            return find(l,aim,start,end)
        else:
            return mid
    else:
        return '找不到'
print(find(list,22,start=0,end=len(list)-1))
View Code

总结:

  递归解决的问题:就是通过参数,控制每一次调用速效计算的规模,适合的场景内,数据的规模在减小,

但是,解决问题的思路并没有改变。结束递归的标志:return

posted @ 2017-07-31 22:51  Aray007  阅读(170)  评论(0编辑  收藏  举报