编程题 题目内容:设计算法求解正整数n的阶乘,并分析其时间复杂度以及空间复杂度(例如n=10) 输入格式:无 输出格式:print() 输出样例:print()
时间: 2024-09-09 13:15:09 浏览: 136
2020-算法设计与分析-期末试题1
编程题目要求我们编写一个算法来计算一个正整数n的阶乘,即n!。阶乘n!是所有小于或等于n的正整数的乘积,n! = n * (n-1) * (n-2) * ... * 1。特别地,0! 定义为 1。
下面是一个使用递归方法来计算阶乘的Python算法示例:
```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
n = 10 # 示例输入
print(factorial(n))
```
时间复杂度分析:
- 对于递归实现,每次函数调用都需要计算n乘以一个更小的阶乘,这个过程会重复n-1次。
- 因此,时间复杂度为 O(n),其中n是输入的数。
空间复杂度分析:
- 递归函数的空间复杂度不仅与递归深度有关,还与每次递归调用所占用的空间有关。
- 对于阶乘问题,递归深度为n,每次递归调用的参数空间是常数级别的,因此总的空间复杂度为 O(n)。
输出样例:
```
print(factorial(10))
# 输出结果为 3628800
```
阅读全文