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时,我们的递归就结束了,这叫做基本条件或边界条件。
【python3 递归(递归函数) – Python3教程】每个递归函数必须有一个基本条件来停止递归,否则函数将无限地调用自己。
递归的优点
  • 递归函数使代码看起来干净优雅。
  • 一个复杂的任务可以用递归分解成更简单的子问题。
  • 使用递归比使用嵌套迭代更容易生成序列。
递归的缺点
  • 有时候递归背后的逻辑很难理解(但其实运用归纳法比一般迭代更容易理解)。
  • 递归调用是昂贵的(低效的),因为它们占用大量的内存和时间。
  • 递归函数很难调试。

    推荐阅读