• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python基础学习之递归函数知识总结

    一、递归函数使用注意点

    递归函数一定要编写终止条件,否则将产生无限递归。(死循环)

    二、递归的效率问题

    三、递归函数引入

    """
    使用代码循环输出故事:从前有座山,山里有座庙...
    """
    # ------------while循环 (暂时忽略死循环)---------------
    while True:
        print("从前有座山,山里有座庙...")
    
    # ---------------通过定义一个方法, 在while循环里面调用实现( 暂时忽略死循环)---------------
    def func_story():
        print("从前有座山,山里有座庙...")
    
    while True: 
        func_story()
    
    # ---------------使用递归的方法实现循环---------------
    def story():
        print("从前有座山,山里有座庙...")
        story()
    
    story()
    # 报错:RecursionError: maximum recursion depth exceeded while calling a Python object
    

    四、递归的深度

    这里就引申到一个递归的最大深度。

    import sys
    
    # 获取最大递归深度
    res = sys.getrecursionlimit()
    print(res) # 输出:1000
    
    # 递归最大深度:
    def func(n):
        print(n)
        n += 1
        func(n)
    
    
    func(1)  # python 3 打印到998就停止打印了
    

    我们可以设置递归的最大深度。但是能够达到的最大深度,跟电脑配置也有关系:

    import sys
    
    # 设置递归的深度
    sys.setrecursionlimit(10000)
    
    
    # 递归最大深度:
    def func(n):
        print(n)
        n += 1
        func(n)
    
    
    func(1)  # python 3 打印到3221就停止打印了
    

    五、通过缓存解决递归限制

    通过缓存解决最大递归限制的问题:


     

    六、递归函数使用示例

    递归函数示例一:

    # 18 20 22 24
    def age(n):
        if n == 1:
            return 18
        else:
            return age(n-1) + 2
    
    print(age(1)) # 输出:18
    print(age(2)) # 输出:20
    print(age(3)) # 输出:22
    print(age(4)) # 输出:24
    
    

    递归函数示例二:打印三级菜单

    # 我们有一个这样的三级菜单
    menu = {
        "功能测试": {
            "用例管理": {
                "添加用例": {},
                "删除用例": {},
                "复制用例": {}
            },
            "元素管理": {
                "添加元素": {},
                "删除元素": {},
                "复制元素": {}
            },
        },
        "接口测试": {
            "API管理": {
                "添加api": {},
                "删除api": {},
                "复制api": {}
            },
            "环境管理": {
                "添加环境": {},
                "删除环境": {},
                "复制环境": {}
            },
        },
    }
    
    def query_menu(menu:dict):
        """
        一级级查询菜单信息
        :return:
        """
        # 用户输入q退出
        while True:
            for k in menu:print(f"当前菜单:{k}")
            key = input(">>>").strip()
            if key == "q": return key
            elif key in menu.keys() and menu[key]:
                res = query_menu(menu[key])
                if res == "q":
                    return "q"
    
    query_menu(menu)
    

    输出结果:

    到此这篇关于python基础学习之递归函数知识总结的文章就介绍到这了,更多相关python递归函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python中的np.argmin()和np.argmax()函数用法
    • Python函数参数和注解的使用
    • python中os.path.join()函数实例用法
    • 浅谈Python中的函数(def)及参数传递操作
    • python 定义函数 返回值只取其中一个的实现
    • python print()函数的end参数和sep参数的用法说明
    • python处理emoji表情(两个函数解决两者之间的联系)
    • Python基础学习之简单理解函数
    上一篇:TensorFlow的自动求导原理分析
    下一篇:使用tensorflow 实现反向传播求导
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python基础学习之递归函数知识总结 python,基础,学,习之,递归,