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

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

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

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

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

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下水道程序员

你的鼓励将是我奋斗的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值