这是代码:
def f(k):
if k<3:
return 1
return f(k-1)+f(k-2)+f(k-3)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
您可以编写一个装饰器来计算对该函数的调用:
def count(func):
def wrapper(*args, **kwargs):
if kwargs.pop("reset", False):
wrapper.calls = 0
wrapper.calls += 1
return func(*args, **kwargs)
wrapper.calls = 0
return wrapper
@count
def f(k):
if k<3:
return 1
return f(k-1)+f(k-2)+f(k-3)
Run Code Online (Sandbox Code Playgroud)
现在您可以计算函数调用数:
>>> f(5, reset=True)
9
>>> f.calls
13
>>> f(23, reset=True)
532159
>>> f.calls
798251
Run Code Online (Sandbox Code Playgroud)