【发布时间】:2020-10-17 16:17:43
【问题描述】:
# THE CODE
import time
# A decorator to time the function being exeuted
def timeit(func):
# The Wrapper
def timer(arg):
current_time = time.time()
result = func(arg)
print("result = ",result) # I know this hinders the time calculation part ... just for testing
time_difference = time.time() - current_time
return result
return timer
# Recursive Function to find factorial
@timeit
def factorial(n):
print("I'm inside factorial")
return n if n < 2 else n * factorial(n-1)
if __name__ == "__main__":
print(factorial(5))
-----output------
I'm inside factorial
I'm inside factorial
I'm inside factorial
I'm inside factorial
I'm inside factorial
result = 1
result = 2
result = 6
result = 24
result = 120
120
我编写了这个程序来计时我的阶乘函数,函数的结果符合预期,但程序的流程不是我预期的。我想了解装饰器和递归是如何工作的,即递归如何映射到原始函数而不是装饰函数,以及如何在不打印“我在阶乘中”的情况下连续打印结果,如在最后的输出中所见。非常感谢您解释流程或指向正确的资源。
【问题讨论】:
标签: python recursion decorator