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