#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 递归特性
# 1. 必须有一个明确的结束条件, 不然进入死循环了
# 2.每次进入更深一层时,问题规模要更小
# 3. 递归效率不高,递归层次过多会导致栈溢出,也就是撑爆内存,因为每次都得等待函数的返回,等待就会占用内存
# 假如有人问数学问题
import time
person_list = ["小梦", "小明", "小浩", "小红"] #就问这些人
def wen(person_list):
# 结束条件 问到小浩知道
if len(person_list) == 0: #给出的列表为空
res = "没谁知道"
return res
person = person_list.pop(0) #列表中的第1个(从0开始的)人,问一个人删一个人
if person == "小浩":
res = "答案是……"
return res
print("%s说不知道,帮你问问他们%s几个" %(person,person_list))
res = wen(person_list) #就是这里有个函数调用,然后就有递归
#print("---%s"%person ,res)
return res
daan = wen(person_list) #这里是第一次调用这个函数
print(daan)