用python编写一个计算输入数值的阶乘的函数fact(x),分别用递归和非递归的方式实现
时间: 2023-09-08 14:05:23 浏览: 232
### 回答1:
递归实现:
```python
def fact_recursive(x):
if x == 0:
return 1
else:
return x * fact_recursive(x-1)
```
非递归实现:
```python
def fact_non_recursive(x):
result = 1
for i in range(1, x+1):
result *= i
return result
```
两种实现方式的结果是相同的。可以通过以下代码进行测试:
```python
x = 5
print(fact_recursive(x)) # 输出120
print(fact_non_recursive(x)) # 输出120
```
### 回答2:
递归方式实现阶乘的函数fact(x)如下:
```python
def fact_recursive(x):
if x == 0:
return 1
else:
return x * fact_recursive(x-1)
```
首先判断输入的数值x是否为0,如果是则直接返回1,因为0的阶乘等于1。对于非0的数值,通过递归调用函数自身来计算阶乘。递归调用的终止条件是当x为0时直接返回1,否则不断地递归调用x-1。在每次递归调用中,将x乘以fact_recursive(x-1)的结果。
非递归方式实现阶乘的函数fact(x)如下:
```python
def fact_non_recursive(x):
result = 1
for i in range(1, x+1):
result *= i
return result
```
我们通过循环来计算阶乘的结果。首先初始化result为1,然后从1到x依次遍历计算阶乘。在每次循环中,将result与当前的i相乘并赋值给result。最终得到的result即为阶乘结果。
无论是递归方式还是非递归方式,都可以实现计算输入数值x的阶乘。具体使用哪种方式取决于个人的需求和代码实现的复杂程度。
### 回答3:
递归方式实现:
```python
def fact_recursive(x):
if x == 0:
return 1
else:
return x * fact_recursive(x-1)
```
非递归方式实现:
```python
def fact_non_recursive(x):
result = 1
for i in range(1, x+1):
result *= i
return result
```
以上分别是使用递归和非递归两种方式编写的计算输入数值阶乘的函数`fact(x)`。在递归方式中,当输入数值为0时,直接返回1;否则,返回输入数值乘以该数值减1的阶乘递归调用。在非递归方式中,将结果初始化为1,然后从1循环乘到输入数值x,并将结果不断累积。无论使用哪种方式,都可以得到输入数值的阶乘结果。
阅读全文