`
def fib(x):
"""assume x an int >= 0
Returns Fibnacci of x"""
global numcalls
numcalls += 1
if x == 0 or x == 1:
return 1
else:
return fib(x-1) + fib(x-2)
def testfib(n):
for i in range(n+1):
global numcalls
numcalls = 0
print 'fib of', i, '=', fib(i)
print 'fib called', numcalls,'times.'
这是使用全局变量来跟踪Fibonacci的递归调用次数的版本,我的问题是如何在不使用全局变量的情况下编写版本?
`
答案 0 :(得分:0)
您应该更改fib
,以便返回(fib(n), numcalls)
的元组。
def fib(x):
"""assume x an int >= 0
Returns tuple of (Fibonacci of x, number of calls)"""
if x == 0 or x == 1:
return 1, 1
else:
f1, n1 = fib(x-1)
f2, n2 = fib(x-2)
return f1 + f2, n1 + n2 + 1