• 递归


    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:递归效率不高 层次过多会导致栈溢出

     

  • 相关阅读:
    [程序员代码面试指南]数组和矩阵问题-未排序正数数组中累加和为给定值的最长子数组长度
    [Mysql]知识点
    [SSM项目]一-Eclipse 搭建marven-web项目 hello world!
    [BZOJ2252]矩阵距离(BFS)
    [Spring实战笔记]4面向切面编程的Spring-代理
    [程序员代码面试指南]数组和矩阵问题-找到无序数组中最小的k个数(堆排序)
    [Java]刷题中的Java基础
    MySql的大小写问题
    MySql密码丢失
    MySql的rpm安装
  • 原文地址:https://www.cnblogs.com/gl-gl/p/9060416.html
Copyright © 2020-2023  润新知