亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python 递归

Python 递归

在本教程中,您将学习创建一个递归函数(一个调用自身的函数)。

什么是递归?

递归是根据自身定义事物的过程。

一个物理世界的例子是放置两个相互面对的平行镜子。它们之间的任何对象都会被递归反射。


Python 递归函数

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

下图显示了名为 recurse 的递归函数的工作原理 .

<图>

下面是一个递归函数求整数阶乘的例子。

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

递归函数示例

def factorial(x):
    """This is a recursive function
    to find the factorial of an integer"""

    if x == 1:
        return 1
    else:
        return (x * factorial(x-1))


num = 3
print("The factorial of", num, "is", factorial(num))

输出

The factorial of 3 is 6

在上面的例子中,factorial() 是一个递归函数,因为它调用自己。

当我们用一个正整数调用这个函数时,它会通过递减数字来递归调用自己。

每个函数将数字乘以它下面的数字的阶乘,直到等于一。这个递归调用可以通过以下步骤来解释。

factorial(3)          # 1st call with 3
3 * factorial(2)      # 2nd call with 2
3 * 2 * factorial(1)  # 3rd call with 1
3 * 2 * 1             # return from 3rd call as number=1
3 * 2                 # return from 2nd call
6                     # return from 1st call

让我们看一张显示正在发生的逐步过程的图像:

<图>

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

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

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

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

def recursor():
    recursor()
recursor()

输出

Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "<string>", line 2, in a
  File "<string>", line 2, in a
  File "<string>", line 2, in a
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

递归的优点

  1. 递归函数使代码看起来干净优雅。
  2. 可以使用递归将复杂的任务分解为更简单的子问题。
  3. 使用递归比使用一些嵌套迭代更容易生成序列。

递归的缺点

  1. 有时递归背后的逻辑很难理解。
  2. 递归调用代价高昂(效率低下),因为它们占用大量内存和时间。
  3. 递归函数很难调试。

Python

  1. Python 函数参数
  2. Python 匿名/Lambda 函数
  3. Python字典
  4. Python 生成器
  5. Python 闭包
  6. Python 装饰器
  7. 带有示例的 Python Lambda 函数
  8. Python abs() 函数:绝对值示例
  9. 带有示例的 Python round() 函数
  10. Python range() 函数:Float、List、For 循环示例
  11. 带有示例的 Python map() 函数
  12. Python 教程中的收益:生成器和收益与返回示例