编写程序,定义一个求阶乘的函数fact(n),分别使用递归和非递归函数实现
时间: 2024-02-07 14:04:16 浏览: 100
好的,以下是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)))
```
以上就是我的回答,希望能够帮到您。
编写程序,定义一个求阶乘的函数fact(n),并编写测试代码,要求输入整数n(n>=0)。分别用使用递归和非递归的方式
编写一个计算阶乘的函数可以采用递归和循环两种常见的方法:
### 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.")
```
阅读全文