编写程序,定义一个求阶乘fact(n)函数,分别用递归和非递归方法实现
时间: 2024-11-29 16:33:13 浏览: 13
编写一个计算阶乘(factorial)的函数,可以采用递归和非递归两种方法。
**递归方法:**
递归是一种通过将大问题分解成更小的相似问题来解决复杂问题的技术。对于阶乘这个例子,我们可以定义一个基本情况(n=0或1时的阶乘),然后处理一般情况(n>1时的阶乘):
```python
def recursive_fact(n):
if n == 0 or n == 1:
return 1
else:
return n * recursive_fact(n - 1)
```
**非递归方法(迭代法):**
非递归方法通常使用循环结构,避免了无限递归的问题。以下是使用循环计算阶乘的例子:
```python
def iterative_fact(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
```
**示例:**
```python
# 测试递归和非递归方法
print(recursive_fact(5)) # 输出: 120 (5! = 5 * 4 * 3 * 2 * 1)
print(iterative_fact(5)) # 输出: 120
```
相关问题
编写程序,定义一个求阶乘的函数fact(n),分别使用递归和非递归函数实现
好的,以下是Python语言的实现代码:
使用递归函数实现阶乘:
```python
def fact(n):
if n == 1: # 递归结束条件
return 1
else:
return n * fact(n-1) # 递归调用
```
使用非递归函数实现阶乘:
```python
def fact(n):
res = 1
for i in range(1, n+1):
res *= i
return res
```
以上代码中,递归函数的实现通过不断调用自身来实现,直到达到递归结束条件。非递归函数则通过循环遍历计算每个数的阶乘,最终得到结果。
编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。 运行效果参见图。请分别使用递归和非递归方式实现。
好的,我明白了。下面是我的回答:
使用递归方式实现:
```python
def fact(n):
if n == 0 or n == 1:
return 1
else:
return n * fact(n-1)
n = int(input("请输入一个非负整数:"))
print("%d 的阶乘为:%d" % (n, fact(n)))
```
使用非递归方式实现:
```python
def fact(n):
result = 1
for i in range(1, n+1):
result *= i
return result
n = int(input("请输入一个非负整数:"))
print("%d 的阶乘为:%d" % (n, fact(n)))
```
以上就是我的回答,希望能够帮到您。
阅读全文