递归特性:

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

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

3、递归效率不高,层次太多会导致内存溢出(栈溢出)

 

例:问路举例,得到结果后返给上一层(上一个人)一个一个向上传话。

import time
person_list = ['alex','wupeiqi','yuanhao','byl','sb']
def ask_way(person_list):
    print('-'*60)
    if len(person_list) == 0 :
        return '没人知道'
    person = person_list.pop(0)
    if person == 'byl':
        return '%s 说在北京朝阳区' %person
    print('hi 你好,%s 公司在哪' %person)
    print('%s 回答说:我不知道,我帮你问问其它人%s' % (person,person_list))
    time.sleep(2)
    res = ask_way(person_list)
    # print('%s 问的结果是:%s ' %(person,res))
    # print(res)
    return res
haha = ask_way(person_list)
print(haha)