zoukankan      html  css  js  c++  java
  • Python老男孩 day15 函数(四) 递归

    https://www.cnblogs.com/linhaifeng/articles/6113086.html

    ——————————————————————————————————————

    七、递归

    def calc(n):
        print(n)
        if int(n / 2) == 0:
            return n
        res=calc(int(n / 2))
        return res
    
    
    res=calc(10)
    print(res)

    运行结果:
    10
    5
    2
    1
    1

    思路:

    10,5,2,1是calc运行时输出的
    最后一个1是res接收到return的返回值而打印输出的

    递归问路

    #_*_coding:utf-8_*_
    __author__ = 'Linhaifeng'
    import time
    
    person_list=['alex','wupeiqi','yuanhao','linhaifeng']
    def ask_way(person_list):
        print('-'*60)
        if len(person_list) == 0:
            return '没人知道'
        person=person_list.pop(0)
        if person == 'linhaifeng':
            return '%s说:我知道,老男孩就在沙河汇德商厦,下地铁就是' %person
        print('hi 美男[%s],敢问路在何方' %person)
        print('%s回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问%s...' %(person,person_list))
        time.sleep(3)
        res=ask_way(person_list)
        print('%s问的结果是: %res' %(person,res))
        return res
    
    res=ask_way(person_list)
    
    print(res)

    运行结果:
    ------------------------------------------------------------
    hi 美男[alex],敢问路在何方
    alex回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问['wupeiqi', 'yuanhao', 'linhaifeng']...
    ------------------------------------------------------------
    hi 美男[wupeiqi],敢问路在何方
    wupeiqi回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问['yuanhao', 'linhaifeng']...
    ------------------------------------------------------------
    hi 美男[yuanhao],敢问路在何方
    yuanhao回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问['linhaifeng']...
    ------------------------------------------------------------
    yuanhao问的结果是: 'linhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是'es
    wupeiqi问的结果是: 'linhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是'es
    alex问的结果是: 'linhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是'es
    linhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是

    递归特性:

    1. 必须有一个明确的结束条件

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的
    ,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,
    所以,递归调用的次数过多,会导致栈溢出)

  • 相关阅读:
    i++后的哈希码会变的原因
    Synchronized 锁的错误使用方式及如何解决
    线程的状态及状态之间的转换
    水满自溢「限流算法第四把法器:漏桶算法」- 第303篇
    Thread的Interrupt、isInterrupted、interrupted
    证明java本身是一个多线程
    强引用、软引用、弱引用、虚引用
    经典脏读,幻想读 不可重复读
    没有预热,不叫高并发「限流算法第三把法器:令牌桶算法」- 第302篇
    redisAPI
  • 原文地址:https://www.cnblogs.com/zhuhemin/p/9107949.html
Copyright © 2011-2022 走看看