首页 > 解决方案 > 我想在 python 中打印斐波那契数列的 fib(5) 以找到否。fib(0) 的次数?错误“函数”对象没有属性“_args_counter”

问题描述

import collections
import functools

def check(func):
    func._args_counter = collections.Counter()
    @functools.wraps(func)
    def wrapper(*args):
        key = ', '.join(str(arg) for arg in args)
        func._args_counter[key] += 1
        return func(*args)

    return wrapper

@check
def fib(n):
    if n == 0 or n == 1:
         return 1
    else:
         return fib(n-1) + fib(n-2)
           
def fib(num):
    if num <= 2:
        return 1
    return fib(num - 1) + fib(num - 2)


print('fib(5) -> {}'.format(fib(5)))
for args, Num in sorted(fib._args_counter.items()):
    print('fib({}): called {} time{}'.format(args, Num,'s' if Num > 1 else ''))

#尝试打印 fib(5) 并计算所有元素的重复次数,但由于“函数”对象没有属性“_args_counter”而出现错误

标签: python-3.xfibonacci

解决方案


推荐阅读