• Python3 递归函数


    递归函数:一个函数在自己内部调用自己,递归最大执行999层

      1. 必须有一个明确的结束条件
      2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
      3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的, 所以,递归调用的次数过多,会导致栈溢出)

    简单递归举例:

    1
    2
    3
    4
    5
    6
    def calc(n):
        print(n)
        if(int(n/2)>0):
            return calc(int(n/2))
        print('====>',n)
    calc(10)

    输出结果:

    1
    2
    3
    4
    5
    10
    5
    2
    1
    ====> 1

    典型的汉诺塔问题:(必须用递归才能解决)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #汉诺塔
    def move(n, a, buffer, c):
        if(n == 1):
            print(a,"->",c)
            return
        move(n-1, a, c, buffer)
        move(1, a, buffer, c)
        move(n-1, buffer, a, c)
    move(3, "a", "b", "c")

    输出结果:

    1
    2
    3
    4
    5
    6
    7
    a -> c
    a -> b
    c -> b
    a -> c
    b -> a
    b -> c
    a -> c
  • 相关阅读:
    js格式化时间和时间操作
    java链接FTP实现上传和下载
    JQuery 对 Select option 的操作
    利用set实现去重
    数组去重的五个办法
    JavaScript实现360度全景图片展示效果
    对于行高(line-height)的一些理解
    Flex 布局教程:语法篇
    学习Javascript闭包
    MySQL explain字段解释
  • 原文地址:https://www.cnblogs.com/bert227/p/9299526.html
Copyright © 2020-2023  润新知