• 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)这种数据结构实现的
    ,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,
    所以,递归调用的次数过多,会导致栈溢出)

  • 相关阅读:
    关于List,Set,Map集合的遍历方法
    关于内部类的了解
    for循环打印图形的详细解析(三角形)
    SSH 免密码登录
    foreach 和 for 的区别
    有关Java集合的区别,和常用方法的总结
    hadoop完全分布式的安装
    对于Oracle analyze table的使用总结 . 对于Oracle analyze table的使用总结 .
    Oracle执行计划与统计信息的一些总结
    oracle10g 统计信息查看、收集
  • 原文地址:https://www.cnblogs.com/zhuhemin/p/9107949.html
Copyright © 2020-2023  润新知