递归调用是一种特殊的嵌套调用,是指某个函数调用自己或者调用其他函数后再次调用自己。由于不能无限嵌套调用,所以某个递归函数一定存在至少两个分支,一个是退出嵌套,不再直接或者间接调用自己;另外一个则是继续嵌套。一般通过函数的输入参数来决定走哪个分支,所以递归函数一般都是带有参数的。
最常见的递归用法是求一个整数的阶乘,如2的阶乘等于1×2,3的阶乘等于1×2×3。

默认情况下,函数调用深度的最大值为1000,如果达到或者超过1000就会出现错误信息。可以通过下面的代码来查看该系统的设置。
>>> import sys
>>> sys.getrecursionlimit() # 得到最大调用深度
如果希望修改该系统值,也可以通过sys模块的接口函数来实现。如希望最大函数调用深度为10000,那么可以使用下面的代码进行修改:
>>> import sys
>>> sys.setrecursionlimit(10000) # 设定最大调用深度
例子:
1.斐波拉契级数
有这样一个数列:1,1,2,3,5,8,13,21,34…。其第一元素和第二个元素等于1,其他元素等于其前面两个元素的和。

网友评论