函数递归

一,递归特性:
1,必须有一个明确的结束条件
例子:
def calc(n):
print(n)
if int(n/2)==0:
return n
res=calc(int(n/2))
return res
calc(10)
输出结果为10,5,2,1

例子:
import time %调用时间函数

person_list = [‘haoqiuxiang’, ‘songyue’, ‘songjicheng’]

def ask_way(person_list):
print(’-’ * 60)
if len(person_list) == 0:
return ‘根本没人知道’
person = person_list.pop(0) %将第0个位置的人取出赋给person,列表中删除掉该人。
if person == ‘songjicheng’:
return ‘%s说:我知道,前方右拐’ % person
print(‘hi 帅哥[%s],敢问路在何方’ % person)
print(’%s回答道:我不知道,我去帮你问问%s…’ % (person, person_list))
time.sleep(3) %3秒打印一次
res = ask_way(person_list) %继续返回执行,执行结果赋给res
print(’%s问的结果是:%res’ % (person, res))
return res

res = ask_way(person_list) %将最终结果返给问路人,并打印
print(res)

先问songyue,她不知道去问另两个人,haoqiuxiang也不知道,去问最后一个人,最后将问的结果返回给haoqiuxiang,然后haoqiuxiang将结果返回给songyue ,最后songyue将输出结果返回给问路人。

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

函数递归