zoukankan      html  css  js  c++  java
  • 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)

    def test(n):
        print(n)
        if n/2==0:  #判断语句
            return n#使用return跳出递归循环
        else:
            res=test(int(n/2))
            print( res )
            return res
    test(10)
    
    #递归至最深处,然后一层层向外反馈

  • 相关阅读:
    CentOS配置sshd
    求逆元 HDU 2516
    求逆元
    二分图的最大匹配
    博弈1
    几何多边形面积交模板
    LAMP服务器的搭建
    扩展欧几里得
    cf780c
    利用栈的逆波兰表达式
  • 原文地址:https://www.cnblogs.com/python1988/p/10094677.html
Copyright © 2011-2022 走看看