采用递归函数求解以下典型问题。要求多运行几次程序,不仅测试到常规递归体,还应该包含对边界条件的测试。 (1) (简答题) 【题目描述】求n! = 1 * 2 * 3 * … * n,可以分为以下两种情况: 1. 当n=1时,所得的结果为1。 2. 当n>1时,所得的结果为n*(n-1)! 【测试数据】 比如:20!,9!,50!,1!,0!等
时间: 2024-02-25 13:52:45 浏览: 40
求解这几个问题,几个递归算法中的问题,挺有意思的。
好的,以下是求解n!的递归函数代码:
```python
def factorial(n):
if n == 1: # 边界条件
return 1
else:
return n * factorial(n-1) # 递归体
```
我们可以使用以下测试数据对该函数进行测试:
```python
print(factorial(1)) # 1
print(factorial(5)) # 120
print(factorial(10)) # 3628800
print(factorial(20)) # 2432902008176640000
print(factorial(0)) # 1
```
可以看到,该递归函数能够正确地求解n!,并且能够处理边界条件n=1和n=0。同时,也要注意当n太大时,会因为Python的递归深度限制而出现RecursionError。
阅读全文