zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    dart 库
    dart effective-设计
    Python3-Set
    python 基本输入和输出+变量和基本对象
    python 基本语法元素
    模版方法模式 展现程序员的一天
    外观模式 一键电影模式
    装饰者模式 带你重回传奇世界
    命令模式 之 管理智能家电
    适配器模式 以手机充电器为例
  • 原文地址:https://www.cnblogs.com/bert227/p/9299526.html
Copyright © 2011-2022 走看看