• 递归


    递归的定义

    函数的递归调用:是函数嵌套调用的一种特殊形式

    具体是指:在调用一个函数的过程当中,又直接或者间接地调用到了本身

    Python对递归调用循环调用的次数有限制,为1000次

    1.调用的例子:

    直接调用本身

    def f1():
        print('是我')
        f1()
    
    f1()

    间接调用本身

    def f1():
        print('我是f1')
        f2()
    
    def f2():
        print('我是f12')
        f1()
    
    f1()

    2.一段代码的循环运行方案有2种

    方式1:while、for循环

    while True:
        print(111)
        print(222)
        print(333)

    方式2:递归循环

    def f1():递归的本质,就是循环
        print(111)
        print(222)
        print(333)
        f1()
    
    f1

    需要强调的一点是

    递归调用不应该无限地调用下去,必须在满足某种条件下,结束递归

    n = 0
    while n < 10:
        print(n)
        n += 1
    def func(n):
        if n == 10:
            return
        print(n)
        n += 1
        func(n)
    
    func(0)

    递归的2个阶段

    1.回溯:一层一层调用下去

    2.递推:满足某种结束条件,结束递归调用,然后一层一层返回

    # age(5) = age(4) + 10
    # age(4) = age(3) + 10
    # age(3) = age(2) + 10
    # age(2) = age(1) + 10
    # age(1) = 18
    def age(n):
        if n == 1:
            return 18
    
        return age(n-1) + 10
    
    res = age(5)
    print(res)

    递归的应用

    l = [1, 2, [3, [4, [5, [6, [7, [8, [9, 10, 11]]]]]]]]
    # l = [1,2,[3,4]]
    def f1(list1):
        for x in list1:
            if type(x) is list:
                # 如果是列表,应该再循环、再判断,即 重新运行本身的代码
                f1(x)
                # for a in x:
                #     if type(a) is list:
                #         pass
                #     else:
                #         print(a)
            else:
                print(x)
    
    f1(l)

    思维导图(点击链接

  • 相关阅读:
    DOM对象模型接口规范中的四个基本接口
    js中几种实用的跨域方法原理详解(转)
    关于ie6/7下的z-index
    Mysql++学习(五)------专用SQL结构
    Mysql++学习(四)------模板查询
    Mysql++学习(三)------举个栗子
    Mysql++学习(二)------Mysql++简述
    Mysql++学习(一)------mysql编译安装
    epoll模型实例
    锁、页类型
  • 原文地址:https://www.cnblogs.com/zhww/p/12983969.html
Copyright © 2020-2023  润新知