个性化阅读
专注于IT技术分析

python3 递归(递归函数) – Python3教程

点击下载

上一章Python教程请查看:python3 函数参数

在本文中,你将学习如何创建递归函数:一个调用自身的函数。

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(num, "的阶乘为: ", calc_factorial(num))

在上面的例子中,calc_factorial()是一个调用自身的递归函数。

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

每个函数调用都用number 1的阶乘乘以number 1,直到number等于1为止,这个递归调用可以通过以下步骤进行解释。

calc_factorial(4)              # 第一次调用: 4
4 * calc_factorial(3)          # 第二次调用: 3
4 * 3 * calc_factorial(2)      # 第三次调用: 2
4 * 3 * 2 * calc_factorial(1)  # 第四次调用: 1
4 * 3 * 2 * 1                  # 返回第4次调用的结果 number=1
4 * 3 * 2                      # 返回第3次调用的结果
4 * 6                          # 返回第2次调用的结果
24                             # 返回第1次调用的结果

当这个数减少到1时,我们的递归就结束了,这叫做基本条件或边界条件。

每个递归函数必须有一个基本条件来停止递归,否则函数将无限地调用自己。

递归的优点

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

递归的缺点

  • 有时候递归背后的逻辑很难理解(但其实运用归纳法比一般迭代更容易理解)。
  • 递归调用是昂贵的(低效的),因为它们占用大量的内存和时间。
  • 递归函数很难调试。
赞(0)
未经允许不得转载:srcmini » python3 递归(递归函数) – Python3教程

评论 抢沙发

评论前必须登录!