我想实现递归函数的修饰器,即纤维数字, idea 是,如你所知,大输入的递归函数需要太多的时间,对于这个例子,我try 了斐波纳契数字,但它返回以下错误:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
个
如果我在没有decorator的情况下运行代码,它工作得很好,并返回相应的输出,但是使用decorator会引发错误,
import time
# start =time.time()
def time_calculator(func):
def n_th_number(n):
start = time.time()
print(func(n))
end = time.time()
print(f'fibonacci lasts for {end - start} second')
return n_th_number
@time_calculator
def fibonacci(n):
if n==0 or n==1:
return n
else:
return fibonacci(n-1)+fibonacci(n-2)
fibonacci(30)
请帮助我了解我的代码有什么问题?
全错误:
1
fibonacci lasts for 0.0 second
0
fibonacci lasts for 0.0 second
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 16, in <module>
fibonacci(30)
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
^^^^^^^^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 7, in n_th_number
print(func(n))
^^^^^^^
File "C:\Users\User\PycharmProjects\New_AI_Era\time_estimation.py", line 15, in fibonacci
return fibonacci(n-1)+fibonacci(n-2)
~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'