前言
从前有座山,山上有座庙,庙里有个老和尚,老和尚再给小和尚讲故事:从前有座山,山上有座庙...
这其实就是一个递归的例子,只不过这是只递不归,,
再比如这段代码:
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)的位置,打印该结果~