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
  • 相关阅读:
    JDBC事务管理
    JDBC常见操作
    Java集合之List接口
    Nginx+Keepalived+Lvs实现双机热备
    Nginx+Consul+Upsync实现动态负载均衡
    DNS域名解析概念
    WPF中实现两个窗口之间传值
    C# 重写(override)和覆盖(new)
    C# DateTime.Now函数
    WPF中在后台实现控件样式
  • 原文地址:https://www.cnblogs.com/bert227/p/9299526.html
Copyright © 2011-2022 走看看