python递归函数特点_Python 递归(Recursion)

Python 递归(Recursion)

在本文中,您将学习如何创建递归函数(调用自身的函数)。

什么是Python中的递归?

递归是根据自身定义某些内容的过程。

一个物理世界的示例是放置两个彼此面对的平行反射镜。它们之间的任何对象都将递归地反映出来。

Python递归函数

在Python中,我们知道一个函数可以调用其他函数。函数甚至可能会调用自身。这些类型的构造称为递归函数。

以下是查找整数的阶乘的递归函数的示例。

数字的阶乘是从1到该数字的所有整数的乘积。例如,阶乘6(表示为6!)是1 * 2 * 3 * 4 * 5 * 6 = 720。

递归函数示例

示例def calc_factorial(x):

"""这是一个

求整数阶乘的递归函数"""

if x == 1:

return 1

else:

return (x * calc_factorial(x-1))

num = 4

print("The factorial of", num, "is", calc_factorial(num))

在上面的示例中,它calc_factorial()是一个递归函数,它调用了自己。

当我们用正整数调用此函数时,它将通过减少数量来递归调用自身。

每个函数将数字乘以该数字下面的数字的阶乘,直到它等于1。可以在以下步骤中解释此递归调用。calc_factorial(4) # 1st call with 4

4 * calc_factorial(3) # 2nd call with 3

4 * 3 * calc_factorial(2) # 3rd call with 2

4 * 3 * 2 * calc_factorial(1) # 4th call with 1

4 * 3 * 2 * 1 # return from 4th call as number=1

4 * 3 * 2 # return from 3rd call

4 * 6 # return from 2nd call

24 # return from 1st call

当数字减少到1时,递归结束。这称为基本条件。

每个递归函数必须具有停止递归的基本条件,否则该函数将无限调用自身。

Python解释器限制了递归的深度,以帮助避免无限递归,从而导致堆栈溢出。

默认情况下,最大递归深度为 1000。如果超出限制,则结果为RecursionError。让我们看一个这样的条件。

示例def recursor():

recursor()

recursor()

输出结果Traceback (most recent call last):

File "", line 3, in

File "", line 2, in a

File "", line 2, in a

File "", line 2, in a

[Previous line repeated 996 more times]

RecursionError: maximum recursion depth exceeded

递归的优点递归函数使代码看起来干净整洁。

使用递归可以将复杂的任务分解为更简单的子问题。

与使用嵌套嵌套相比,使用递归更容易生成序列。

递归的缺点有时,递归背后的逻辑很难遵循。

递归调用很昂贵(效率低),因为它们占用大量内存和时间。

递归函数很难调试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值