请解释什么是递归函数，并提供一个简单的示例。递归函数的解释部分应至少包含三个要点，示例必须以 Python 代码的形式给出。整个回答请用Markdown格式书写。
user
```markdown
### 递归函数解释

递归函数是一种在函数的定义中直接或间接地调用自身的技术。这种机制在解决可以分解为多个相同问题的子问题时特别有效。以下是递归函数解释中的三个要点：

1. **基线条件（Base Case）**：递归函数必须有一个或多个条件，在这些条件下函数将直接返回一个结果而不再进行递归调用。这是递归过程的终点，防止了无限递归的发生。
2. **递归步骤（Recursive Step）**：除了基线条件之外的部分，这一部分定义了如何缩小问题规模，并朝着基线条件逐步进展，使得每个递归调用都更趋向于结束条件。
3. **效率考量**：使用递归可能会导致较大的栈空间消耗，因此对于深度很大的递归调用，可能会遇到栈溢出的错误。此外，某些递归算法可以通过动态规划等方法优化，以减少重复计算。

### 简单示例

下面是一个计算阶乘的简单递归函数示例，使用了 Python 语言：

```python
def factorial(n):
    # 基线条件
    if n == 0:
        return 1
    # 递归步骤
    else:
        return n * factorial(n - 1)

# 测试函数
print(factorial(5))  # 输出: 120
```

在这个例子中，`factorial` 函数通过递归调用自身来计算给定数字的阶乘。当 `n` 为 0 时直接返回 1，这是递归的终结条件。否则，函数将以较小的参数再次调用自身，直到满足基线条件为止。
```
assistant