zoukankan      html  css  js  c++  java
  • python学习笔记 day17 初识递归

    前言

    从前有座山,山上有座庙,庙里有个老和尚,老和尚再给小和尚讲故事:从前有座山,山上有座庙...

    这其实就是一个递归的例子,只不过这是只递不归,,

    再比如这段代码:

    def story():
        print("从前有座山")
        story()
    
    story()

    调用story() 会不断地执行里面的代码,不断又调用story(),我们都知道当调用函数的时候,会开辟一个内存空间,但是这段代码,不断的调用story()而且最外层的调用还没有被释放,内存一直没被占用,一直被开辟空间,python设置了递归调用的最大深度是998,所以这段代码执行之后会报错:

    就是递归错误,超过了递归的最大深度~

    初识递归:-----在函数内部调用该函数就是递归

    比如下面这个例子:

    问题分析,一次次往下-----递;结果一次次向上传递---归

    转化为代码:

    def age(n):
        if n==4:
            return 40
        else:
            return age(n+1)+2   
    
    print(age(1))

    运行结果:

    分析过程:

    首先你要明白age()这个函数是有返回值的!!

    当你调用age(1)时,执行 return age(2)+2 -----》然后你要去执行 age(2): return age(3)+2-----》age(3):return age(4)+2-----》age(4):return 40  

    然后将最后一层函数返回的结果一层层往上传: age(4)拿到返回值40-----》放在调用它age(4)的位置 就是age(3)=40+2  所以age(3)的返回值 42----》,age(2)的返回值局势42+2=44 ----》age(1)的返回值就是44+2=46

    最后返回给函数调用age(1)的位置,打印该结果~

    talk is cheap,show me the code
  • 相关阅读:
    Python处理时间 time && datetime 模块
    破解Mysql数据库密码
    JS一定要放在Body的最底部么?
    jQuery 层次选择器
    关于jquery中html()、text()、val()的区别
    解读JSP的解析过程
    JavaScript字符串分割方法
    maven install与maven package 的区别
    JSP起源、JSP的运行原理、JSP的执行过程
    Chrome隐身模式有什么用
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9615666.html
Copyright © 2011-2022 走看看