zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Awesome Adb——一份超全超详细的 ADB 用法大全
    adb devices unauthorized的解决办法
    Vim用法AAAAA
    Security arrangements for extended USB protocol stack of a USB host system
    六 Python基础 字符串和编码
    四 Python基础
    三 Python解释器
    二安装Python
    Python教程(一)Python简介
    Python基本语法[二]
  • 原文地址:https://www.cnblogs.com/zhongbokun/p/7266161.html
Copyright © 2011-2022 走看看