zoukankan      html  css  js  c++  java
  • Python3-算法-递归

    递归

      递归算法是指一般通过函数或子进程来实现,在函数或子进程的内部,直接或间接地调用自己的算法,说白了就是自己调自己

      注:

        1.在使用递归的时候,必须要有一个递归出口,即一个明确的结束条件,否则就是死循环

        2.递归算法解题通常显得很简洁,但递归的运行效率较低,一般不提倡使用

        3.递归要一层一层的进,然后在一层一层的出,所以因此想拿到最里面一层的局部变量的值,靠return是很难拿到的(至少我不会)

        4.Python3中允许的最大递归层数目前是999层

    # 函数实现
    def fibonacci(arg1, arg2, stop):
        print(arg1)
        arg3 = arg1 + arg2
        if arg3 < stop:    # 递归出口
            fibonacci(arg2, arg3, stop)    # 调用自己,实现递归
    
    # 调用
    fibonacci(0, 1, 100)
    1.递归算法实现打印斐波那契数列
    class BisectionSearch:
        """
        二分法查找类
        查找的是从小到大的顺序序列
        """
        __result = False    # 查找结果
    
        def __search(self, target, source):
            """
            内部递归查找算法
            :param target: 查找目标
            :param source: 数据源
            :return: None
            """
            mid_idx = int(len(source) / 2)
            if 1 != mid_idx:
                if target < source[mid_idx]:
                    self.__search(target, source[:mid_idx])
                elif target > source[mid_idx]:
                    self.__search(target, source[mid_idx:])
                else:
                    self.__result = True
            else:
                self.__result = target in source
    
        def find_target(self, target, source):
            """
            对外提供的查找方法
            :param target: 查找目标
            :param source: 数据源
            :return: 是否找到
            """
            self.__search(target, source)
            return self.__result
    
    # 调用
    bs = BisectionSearch()
    source_list = [i for i in range(1, 1000, 3)]
    find_target = 10
    result = bs.find_target(find_target, source_list)
    print("查找结果:", result)
    2.递归算法实现二分法查找
  • 相关阅读:
    java jar 后台运行
    【Objective-C】内存管理
    GitHub Gist 指南
    模板发送java邮件
    JDK环境配置
    新装mysql数据库登陆不上去(账号密码正确)
    一个简单的爬取b站up下所有视频的所有评论信息的爬虫
    hexo Nunjucks Errors 解决方法
    新版正方教务系统导出课程表-油猴脚本
    ACM-图论-同余最短路
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6564857.html
Copyright © 2011-2022 走看看