python中的递归函数(以阶乘和莱布尼茨公式逼近圆周率为例)

 递归函数,顾名思义是自己一步步完成这个程序的设定目标,从而输出我们想要的目标,这其中可以将复杂的代码和运算简化,大大节约了内存和可读性。

接下来我先说几个递归函数的要点:

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

二,莱布尼茨公式逼近圆周率

python中的递归函数(以阶乘和莱布尼茨公式逼近圆周率为例)_第1张图片

面对这样一个题目,我们要做的首先是找到他的通项公式,找到后再进行下一步操作。

我先使用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循环似乎更加简洁,但是我们如果掌握了递归函数,可以以更快的速度完成这个项目,变得更加高效。

写在最后:如果有人对上面的内容不懂,欢迎在评论区提问,我会在闲暇时间为你解答。

你可能感兴趣的:(python基础知识,python,开发语言)