Python 函数递归

#!/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)

 

posted @ 2022-04-02 17:18  一百零八斤好汉  阅读(22)  评论(0)    收藏  举报