实现两种求阶乘的算法,定义为2个函数,利用装饰器为上述函数添加记录函数运行时间工程。
时间: 2024-11-22 15:36:10 浏览: 18
你可以通过两种常见的方法来实现计算阶乘的功能,并且为这两个函数添加装饰器来记录运行时间。这里我们假设你正在使用Python编写代码:
首先,我们可以直接编写两个计算阶乘的基本函数,比如递归和循环版本:
```python
def factorial_recursive(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial_recursive(n - 1)
def factorial_iterative(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
```
接下来,我们可以创建一个装饰器`time_it`来计算并打印每个函数的运行时间:
```python
import time
def time_it(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__}运行时间: {end_time - start_time}秒")
return result
return wrapper
@time_it
def factorial_calculator(n, method="recursive"):
if method == "recursive":
return factorial_recursive(n)
elif method == "iterative":
return factorial_iterative(n)
else:
raise ValueError("无效的方法")
# 使用时
factorial_calculator(5, "recursive") # 记录递归版阶乘的运行时间
factorial_calculator(5, "iterative") # 记录迭代版阶乘的运行时间
```
在这个例子中,你可以选择递归(`"recursive"`) 或迭代(`"iterative"`)的方式来计算阶乘,并且每次调用`factorial_calculator`都会自动记录并打印所选方法的运行时间。
阅读全文