fibMetered(x):
global numCalls
numCalls += 1
if x == 0 or x == 1:
return 1
else:
return fibMetered(x-1) + fibMetered(x-2)
def testFib(n):
global numCalls
numCalls = 0
for i in range(n+1):
print('fib of ' + str(i) + ' = ' + str(fibMetered(i)))
print ('fib called ' + str(numCalls) + ' times')
testFib(5) 上面的是经典的递归算斐波那契数列!下面是测试每计算(调用)一次递归函数,计算结果是多少并且调用了递归几次!但是中间定义了global变量,存在bug,即每次调用的时候,因为numCalls是global variable,所以每次测试i的时候,numCalls的值会连带上一次i(i-1)的调用次数一起计算,所以这个testFib是测试不出准确值的,如果要改的话应该怎么改?有几种改法?为什么这么改?
添加回答
举报
0/150
提交
取消