• 函数的递归


    一、什么是函数的递归?

      即:函数在调用截断直接或间接的又调用自身。

      听起来有点绕~~~即函数内部套用自己,进而循环。但学while了解,写程序要避免写死循环,因为死循环会增加CPU运行负荷,严重造成死机。

      那为什么会用到函数递归呢???

    二、函数递归运用的场景:

       1、无限大列表,套列表,再套列表... 循环打印

        l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]

        老方法我们也可以推断出来,但是太繁琐,如果列表再大一些就无能为力

    l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]
    
    for i in l:    #  推导思路
        if type(i) is int:
            print(i)
        else:
            for item in i:
                if type(item) is int:
                    print(item)
                else:
                    for j in item:
                        if type(item) is int:
                            print(item)
                        else:
                            .......  # 依次类推
    View Code

        于是可以用于函数的递归轻松解决

    l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]
    
    def get_num(l):
        for i in l:
            if type(i) is int:
                print(i)
            else:
                get_num(i)
    
    get_num(l)
    l1 = []
    for i in l1:
        print(i)
    #输出结果依次1 2 3...11 12 13
    View Code

    三、递归了解

      函数递归分为两个阶段

       1、回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都应该下降直到有一个最终的结束条件

       2递推:一次次往回推导的过程

       ps:递归函数不要考虑循环的次数 只需要把握结束的条件即可

  • 相关阅读:
    冒泡排序&快速排序
    1252. Cells with Odd Values in a Matrix
    位运算小结
    832. Flipping an Image
    1812. Determine Color of a Chessboard Square
    10、属性、构造函数与析构函数
    09、封装与类成员
    07、面向对象简介
    06、C#异常处理
    03、运算符
  • 原文地址:https://www.cnblogs.com/xiaowangba9494/p/11176355.html
Copyright © 2020-2023  润新知