• 递归


    1 def calc(n):
    2     print(n)
    3     if int(n/2) == 0: #递归出口
    4        return n
    5     res=calc(int(n / 2))
    6     return res
    7 calc(10)
    运行结果:
    10
    5
    2
    1
    

     

    import time
    person_list=['alex','wangzi','kaixin','dashu']
    def ask_way(person_list):
        print('_'*60)
        if len(person_list) == 0:
            return '没有人知道在哪'
        person=person_list.pop(0)
        if person == 'dashu':
            return '%s说:我知道,在中心街' %person
        print('hi,请问[%s],你知道www在哪吗?'%person )
        print('%s 回答:不知道 但念在你态度诚恳 我去帮你问问%s...'%(person,person_list))
        time.sleep(2)
        res=ask_way(person_list)  #调用自己     
        print('%s问的结果是:%res'%(person,res))
        return res
    res=ask_way(person_list)
    print(res)
    运行结果:
    ____________________________________________________________
    hi,请问[alex],你知道www在哪吗?
    alex 回答:不知道 但念在你态度诚恳 我去帮你问问['wangzi', 'kaixin', 'dashu']...
    ____________________________________________________________
    hi,请问[wangzi],你知道www在哪吗?
    wangzi 回答:不知道 但念在你态度诚恳 我去帮你问问['kaixin', 'dashu']...
    ____________________________________________________________
    hi,请问[kaixin],你知道www在哪吗?
    kaixin 回答:不知道 但念在你态度诚恳 我去帮你问问['dashu']...
    ____________________________________________________________
    kaixin问的结果是:'dashu说:我知道,在中心街'
    wangzi问的结果是:'dashu说:我知道,在中心街'
    alex问的结果是:'dashu说:我知道,在中心街'
    dashu说:我知道,在中心街
    
    Process finished with exit code 0
    

    递归特性:

    1:必须有明确的出口

    2:每次进入更深一层递归 问题规模减小

    3:递归效率不高 层次过多会导致栈溢出

     

  • 相关阅读:
    《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
    网络监控工具 iftop dstat
    可进行组合的枚举
    查看Qt自带的QSS
    通过文件设置QSS
    QString转QByteArray
    error: jump to case label
    error: static member function cannot have cv-qualifier
    C++ std::vector的大小和容量
    获取QMessageBox返回值
  • 原文地址:https://www.cnblogs.com/gl-gl/p/9060416.html
Copyright © 2020-2023  润新知