递归是一种在解决问题时将问题分解成更小且与原问题具有相同结构的子问题的方法。在递归过程中,函数会调用自身来解决这些子问题。递归通常用于解决可以通过不断将问题分解为更小的子问题来解决的问题,直到达到基本情况(终止条件)。
递归包含两个主要部分:
基本情况(Base Case): 一个或多个简单的问题,不再需要进一步的递归求解,直接得出答案。
递归情况(Recursive Case): 将问题分解为规模更小的子问题,并通过递归调用自身来解决这些子问题。
递归的例子:阶乘计算
阶乘是一个常见的递归例子。阶乘表示将一个自然数 n 与所有小于等于它的自然数的乘积。阶乘通常用符号 "!" 表示。
阶乘的递归定义如下:
[ n! = \begin{cases}
1 & \text{if } n = 0 \
n \times (n-1)! & \text{if } n > 0
\end{cases} ]
在Python中,可以实现阶乘递归算法如下:
def factorial(n):
# 基本情况
if n == 0:
return 1
# 递归情况
else:
return n * factorial(n - 1)
# 示例
result = factorial(5)
print(result) # 输出:120
在这个例子中,factorial
函数通过递归调用自身来计算阶乘。基本情况是 (n = 0) 时,返回 1,否则递归地计算 (n \times (n-1)!)。在这个过程中,问题不断被分解为规模更小的子问题,直到达到基本情况。