我有一个函数def recFib,它返回一系列不同的数字,但我希望能够计算它返回“计算fib(3)”的次数。我试图实现一个计数器,但它只返回0。有人知道我会怎么做吗
代码:
# fib.py
def loopFib(n):
# pre: n > 0
# returns the nth Fibonacci number
curr = 1
prev = 1
for i in range(n-2):
curr, prev = curr+prev, curr
return curr
def recFib(n):
print("Computing fib" "(",n,")" )
if n<3:
print("Leaving fib" "(",n,")" "returning",1)
return 1
else:
x=recFib(n-1)
y=recFib(n-2)
print("Leaving fib" "(",n,")" "returning",x+y)
return x+y
n = 10
#print(recFib(n))
counter = []
if (recFib(n) == "Computing fib( 3 )"):
counter.append('Three')
count3s = counter.count('Three')
print("Threes", count3s )
#Should return 21 instances of "Computing fib(3)"
输出: (输出外观的示例)
Computing fib( 10 )
Computing fib( 9 )
Computing fib( 8 )
Computing fib( 7 )
Computing fib( 6 )
Computing fib( 5 )
Computing fib( 4 )
Computing fib( 3 )
Computing fib( 2 )
Leaving fib( 2 )returning 1
Computing fib( 1 )
Leaving fib( 1 )returning 1
Leaving fib( 3 )returning 2
Computing fib( 2 )
Leaving fib( 2 )returning 1
Leaving fib( 4 )returning 3
Computing fib( 3 )
您的函数从不返回
"Computing fib( 3 )"
,它只打印。这就是为什么你的条件recFib(n) == "Computing fib( 3 )"
永远不会实现的原因。修改代码的最简单方法是:这确实产出了21
使用call counter decorator
装饰师
只需将decorator添加到原始代码中
用法
输出
相关问题 更多 >
编程相关推荐