请给出一个使用递归实现的阶乘函数的例子，并用注释解释每一步。
user
```python
# 定义一个递归函数来计算阶乘
def factorial(n):
    # 基本情况：如果n为0或1，阶乘结果为1
    if n == 0 or n == 1:
        return 1
    # 递归情况：n * (n-1)!，即n乘以比n小1的数的阶乘
    else:
        return n * factorial(n-1)

# 测试函数：计算5的阶乘
print(factorial(5))  # 输出应为120
```

以上代码中，`factorial` 函数通过递归方式计算了给定正整数的阶乘。递归的基本情况是当输入为0或1时，直接返回1。递归情况是将问题分解为更小的问题，即计算比当前数小1的数的阶乘，然后与当前数相乘。最终，当递归调用返回时，会计算出原始输入数的阶乘。
assistant