编写模块文件factor.py,定义一个函数fact(x),用递归方式计算x的阶乘作为函数返回值,在模块内编写测试代码能独立运行测试
时间: 2024-03-09 18:50:54 浏览: 24
factor.py 模块文件代码如下:
```python
def fact(x):
if x == 0:
return 1
else:
return x * fact(x-1)
if __name__ == '__main__':
# 测试代码
print(fact(0)) # 1
print(fact(1)) # 1
print(fact(5)) # 120
print(fact(10)) # 3628800
```
在这个模块文件中,我们定义了一个名为 `fact` 的函数来计算阶乘。在函数内部,我们使用递归的方式来计算阶乘。如果输入的参数为 0,函数将返回 1。否则,函数将返回 x 与 fact(x-1) 的乘积。
另外,在模块文件的最后,我们编写了一些测试代码来验证函数的正确性。这些测试代码只有在该模块文件被直接运行时才会被执行,而在其他模块文件中导入该模块时不会执行。这是通过检查 `__name__` 变量是否等于 `'__main__'` 来实现的。
相关问题
编写一个计算输入数值的阶乘的函数fact(x),分别用递归和非递归的方式实现
递归方式实现:
```python
def fact(x):
if x == 0:
return 1
else:
return x * fact(x-1)
```
非递归方式实现:
```python
def fact(x):
result = 1
for i in range(1, x+1):
result *= i
return result
```
注意:在实际使用中,阶乘函数会受到输入值大小的限制,当输入值较大时,递归方式容易发生栈溢出错误。此时建议使用非递归方式实现。同时,阶乘的结果也会非常大,可能会超出计算机可表示的范围,因此需要使用高精度计算库来表示阶乘的结果。
python编写一个计算输入数值的阶乘函数fact(x),分别用递归和非递归的方式实现
好的,下面是递归和非递归方式实现计算阶乘的Python代码:
## 递归方式实现
def fact_recursive(x):
if x == 0:
return 1
else:
return x * fact_recursive(x-1)
## 非递归方式实现
def fact_nonrecursive(x):
result = 1
for i in range(1, x+1):
result *= i
return result
# 测试
print(fact_recursive(5)) # 输出结果为 120
print(fact_nonrecursive(5)) # 输出结果为 120