zoukankan      html  css  js  c++  java
  • python基础学习-函数的递归调用

    一:函数的递归调用

    1、递归的定义

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

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

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

    #示范:
    #直接调用本身
    def f1():
        print('是我')
        f1()
    f1()
    ​
    #间接调用本身
    def f1():
        print('我是f1')
        f2()
    ​
    def f2():
        print('我是f12')
        f1()
    f1()

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

    #方式1:while、for循环
    while True:
        print(111)
        print(222)
        print(333)
        
    #方式2:while、for循环
    def f1():  #递归的本质,就是循环
        print(111)
        print(222)
        print(333)
        f1()​

    2、递归的特别强调:

    Python没有尾递归优化(了解)

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

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

    3、递归的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 18return age(n-1) + 10
    ​
    res = age(5)
    print(res)

    4、递归的应用

    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) 
  • 相关阅读:
    图像控件 ImageControl
    日期条控件 DateFieldControl
    日期选择器和日期条控件 DateChooserAndDateFieldControls
    计数器控件实例 NumericStepper
    树结构控件实例 TreeControl
    vue2.0leaflet
    关于工具类中@Autowired注入为NULL的问题记录
    zabbix_agentd重装后启动时IPC和共享内存段问题
    rsync如何不指定密码文件
    MySQL5.7 JSON类型及其相关函数的学习
  • 原文地址:https://www.cnblogs.com/dingbei/p/12571321.html
Copyright © 2011-2022 走看看