编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。分别用使用递归和非递归的方式
时间: 2024-10-15 22:20:50 浏览: 58
c代码-编写一个求阶乘的函数Fact(),然后在主函数中,计算并输出1到n之间所有数的阶乘值
编写一个计算阶乘的函数可以采用递归和循环两种常见的方法:
### 1. 递归方式
递归函数是一种通过函数自身调用来解决问题的方法,适用于满足“基本情况”和“递归情况”的问题,如阶乘。下面是Python中递归版的`fact`函数:
```python
def fact_recursive(n):
if n == 0 or n == 1: # 基本情况:0和1的阶乘都是1
return 1
else:
return n * fact_recursive(n - 1) # 递归情况:n的阶乘等于n乘以(n-1)的阶乘
# 测试代码
n = int(input("请输入一个正整数: "))
if n >= 0:
print(f"n={n} 的阶乘是: {fact_recursive(n)}")
else:
print("输入值需要大于等于0.")
```
### 2. 非递归(循环)方式
非递归版本通常使用循环来避免函数的自我调用,这种方法更高效且易于理解和调试。以下是Python中的循环版`fact`函数:
```python
def fact_iterative(n):
result = 1
for i in range(1, n + 1): # 从1到n迭代计算
result *= i
return result
# 测试代码
n = int(input("请输入一个正整数: "))
if n >= 0:
print(f"n={n} 的阶乘是: {fact_iterative(n)}")
else:
print("输入值需要大于等于0.")
```
阅读全文