zoukankan      html  css  js  c++  java
  • 函数的递归

    一、什么是函数的递归?

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

      听起来有点绕~~~即函数内部套用自己,进而循环。但学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:递归函数不要考虑循环的次数 只需要把握结束的条件即可

  • 相关阅读:
    在阿里云服务器上安装MySQL
    mui中调用ajax时报abort错误
    IDEA根据数据库表生成pojo对象
    java.io.IOException: All specified directories have failed to load.
    mysql隔离级别
    java8新特性
    数据库语言分类
    Spring AOP 代码示例
    java NIO学习(二)
    java NIO学习(一)
  • 原文地址:https://www.cnblogs.com/xiaowangba9494/p/11176355.html
Copyright © 2011-2022 走看看