编写 n! 函数的递归算法及非递归算法
时间: 2024-11-12 11:00:43 浏览: 30
编写计算阶乘 (n!) 的函数,无论是递归还是非递归,都涉及到将 n 乘以所有小于它的正整数。以下是递归算法和非递归算法的示例:
**递归算法 (Python):**
```python
def factorial_recursive(n):
if n == 0 or n == 1: # 基线条件
return 1
else:
return n * factorial_recursive(n - 1) # 递归调用
# 使用示例
print(factorial_recursive(5)) # 输出: 120
```
**非递归算法 (Python):**
```python
def factorial_iterative(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
# 使用示例
print(factorial_iterative(5)) # 输出: 120
```
**递归算法的工作原理:**
递归函数通过不断缩小问题规模(每次调用自身时减小 n),直到达到基本情况(n=0 或 1),然后逐层返回结果,直至组合成整个序列的乘积。
**非递归算法的工作原理:**
非递归算法通常使用循环结构(如 `for` 循环),直接按照阶乘的定义逐步累积乘积。
**相关问题--:**
1. 递归和非递归算法哪种更高效?
2. 阶乘函数的时间复杂度是多少?
3. 递归算法可能会导致什么问题?
阅读全文
相关推荐

















