其实说白了,就是写递归写上瘾了,昨天写了

JavaScript的递归函数

,今天写一下python递归函数。如果看过昨天的文章的话,今天的就很容易理解了,递归函数,其实虽然名字看着高大上,但实际上就是自己调用自己而已。

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。在函数内部调用其他函数不是函数的嵌套,而在函数内部定义子函数才是函数的嵌套。

简单的看一下在python中递归函数的特性吧:

1、递归函数必须有一个明确的结束条件。2、每进入更深一层的递归时,问题规模相对于上一次递归都应减少。3、相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)。4、递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

def f(n):
if n==1:
return 1
else:
return (f(n-1)+1)*2
print(f(10))
</pre>

简单看一个小例子,我们计算
f(n) = (f(n-1) + 1)*2
这个的值,如果平常写的话,不使用哦个递归,那么就需要一直调用这个函数来进行计算,而我们使用递归的话,就是在函数内部不断调用,然后返回函数结果,
我们来看一下python中递归函数的优缺点。
优点其实很明确了,就是定义简单,篇幅少,本来需要很多行的代码,只需要几行就可以了。而缺点其实也很明显,如果我们设置的最终结束条件不是很好的话,那么会占用很多的资源来进行计算。
很容易导致栈的溢出。
但实际上其实递归函数的思路是非常明确的,
递归值的返回时返回到上一层,而其他的层在执行的过程中,均处于等待答案的过程中。python递归函数
其实简单来说,就是一个自己不断调用自己的过程。

最后修改:2021 年 04 月 19 日 09 : 01 PM
如果觉得我的文章对你有用,请随意赞赏