递归函数,顾名思义是自己一步步完成这个程序的设定目标,从而输出我们想要的目标,这其中可以将复杂的代码和运算简化,大大节约了内存和可读性。
接下来我先说几个递归函数的要点:
1,递归函数得在自己的函数中调用自己,才能一步步自己执行下去。
2,递归函数得自己设定结束的标志,不然会一直运算下去。
我下面用两个例子让大家理解递归函数
一,阶乘
当我们想知道一个数的阶乘时,我们可能要使用很多个for循环才可以实现,现在我们使用递归函数来解决他。
def get_nums(num):
if num > 1:
return num * get_nums(num-1)
else:
return 1
res=get_nums(3)
print(res)
这样一个简单的递归函数就写好了,我下面来解析他的运行方式
输入3时,达成num>1的限定,进入3*get_num(2),相同的get_num(2)调用了自己这个函数进行了套娃式的操作,最后当2-1=1时,会进入else项,返回值为1,最后函数调用结束。
即为:3*2*1*1=6
二,莱布尼茨公式逼近圆周率
面对这样一个题目,我们要做的首先是找到他的通项公式,找到后再进行下一步操作。
我先使用for循环做一遍
x = int(input("请输入项数"))
Π = 0
for i in range(x+1):
Π = (((-1)**(i+1))/(2*i-1))
Π= Π+Π
print(Π*4)
下面我使用递归函数来做
def getYZL(num):
if num > 1:
return (((-1)**(num+1))/(2*num-1))+getYZL(num-1)
else:
return 1
x = int(input("请输入项数"))
res = getYZL(x)
print(res*4)
这便是递归函数的操作。递归函数的模板基本上是一样的,换汤不换药,虽然此时for循环似乎更加简洁,但是我们如果掌握了递归函数,可以以更快的速度完成这个项目,变得更加高效。
写在最后:如果有人对上面的内容不懂,欢迎在评论区提问,我会在闲暇时间为你解答。