2018年12月10日 递归函数2

递归特性:

1必须有明确的结束条件
2递归规模每次降低
3递归效率偏低,容易导致栈溢出(函数是通过栈stack 这种数据结构实现的,调用一次函数,多增加一次栈帧,函数返回则减小一次,stack不是无限大,所以递归调用过多会导致溢出)

PEOPLE = ["sxj","abc","def","ghi","alex",'mm',"syc"]
def ask_way(PEOPLE):
    "问路函数"
    print("-"*60) # 制作分隔符
    if len(PEOPLE)==0:
        return  print("no one Know")
    man = PEOPLE.pop(0)  #每次删除一个人
    if man == "alex":
        return "%s Know" % man
    else:
        print("HI,%s,do you know?" % man)
        print("I do not know,U can ask %s"%PEOPLE)
    res=ask_way(PEOPLE)# 形成循环 由于pop已经删除第一个,所以循环
    print("%s say:"%man,res)#
    return res



res=ask_way(PEOPLE)
print(res)
print(PEOPLE)

import time#调用time 函数
def calc():#"死循环"此循环称为递归
    print("sxj")
    time.sleep(1)
    calc()

def test(n):
    print(n)
    if n/2==0:  #判断语句
        return n#使用return跳出递归循环
    else:
        res=test(int(n/2))
        print( res )
        return res
test(10)

#递归至最深处,然后一层层向外反馈

猜你喜欢

转载自www.cnblogs.com/python1988/p/10094677.html