zoukankan      html  css  js  c++  java
  • 递归

    递归的定义

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

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

    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)

    思维导图(点击链接

  • 相关阅读:
    Java实战项目收集
    Drebin数据集
    网络“法官”
    沉醉
    孔方兄
    《Qt 5.9 C++开发指南》例程源码
    《论语》中那些耳熟能详的词汇
    破祟
    Qt使用UI编辑器添加的控件Icon运行时不显示
    Ubuntu格式化SD卡
  • 原文地址:https://www.cnblogs.com/zhww/p/12983969.html
Copyright © 2011-2022 走看看