递归函数

Posted pankypan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数相关的知识,希望对你有一定的参考价值。

递归函数

初识递归

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

现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归


Python递归的最大深度

正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去。但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制的将递归层数控制在了1000

def recursion_deep(n=1):
    print(n)
    n += 1
    recursion_deep(n)


if __name__ == '__main__':
    recursion_deep()

设置默认递归层数:

import sys
sys.setrecursionlimit(2000)


def recursion_deep(n=1):
    print(n)
    n += 1
    recursion_deep(n)


recursion_deep()


递归应用

三级菜单

menu = 
    '北京': 
        '海淀': 
            '五道口': 
                'soho': ,
                '网易': ,
                'google': 
            ,
            '中关村': 
                '爱奇艺': ,
                '汽车之家': ,
                'youku': ,
            ,
            '上地': 
                '百度': ,
            ,
        ,
        '昌平': 
            '沙河': 
                '老男孩': ,
                '北航': ,
            ,
            '天通苑': ,
            '回龙观': ,
        ,
        '朝阳': ,
        '东城': ,
    ,
    '上海': 
        '闵行': 
            "人民广场": 
                '炸鸡店': 
            
        ,
        '闸北': 
            '火车战': 
                '携程': 
            
        ,
        '浦东': ,
    ,
    '山东': ,
def three_menu(dic):
    while True:
        for k in dic:
            print(k)
        key = input("input>>>").strip()
        if key == 'q' or key == 'b':
            return 'q'
        elif key in dic.keys() and dic[key]:
            ret = three_menu(dic[key])
            if ret == 'q':
                return 'q'


three_menu(menu)

二分查找

def search(num, lst, start=None, end=None):
    start = 0 if start is None else start
    end = len(lst) - 1 if end is None else end
    mid = (end - start) // 2 + start
    if start >= end:
        return None
    elif lst[mid] > num:
        return search(num, lst, start, mid - 1)
    elif lst[mid] < num:
        return search(num, lst, mid + 1, end)
    elif lst[mid] == num:
        return mid


lst = [1, 2, 5, 8, 13, 23, 26, 33, 35, 40]
print(search(22, lst))  # None
print(search(23, lst))  # 5


以上是关于递归函数的主要内容,如果未能解决你的问题,请参考以下文章

UE4定义递归函数

递归与内置函数

函数递归

python 递归与递归函数

python - - 函数 - - 递归函数

R语言递归函数示例(Recursive Functions):使用递归函数计算阶乘使用递归函数计算数据序列的平方和