python-3.x - 我想在 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 - list 的列表理解作为 any 函数的输入的原因是什么?
- kdb - 基于 vars 的值构建的解析树
- python - python - 如何使用Python中的字典找到值总和等于或大于k的键的可能组合?
- javascript - 将对象与对象解构和旋转运算符相结合
- php - 在 Directus 中直接访问外部 PHP 脚本的数据
- javascript - NextJS 与 url 名称不同的页面名称
- c - Doxygen 无法扩展 AUTOSAR 宏
- javascript - 如何检测 JS for 循环中的状态变化?
- python - 在 Django 中,是否可以迁移任何特定的特定文件?
- decision-tree - 使用 c4.5 进行情绪分析