递归

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

 

 

posted @ 2018-05-19 15:15  容颜-gl  阅读(87)  评论(0编辑  收藏  举报