猿问

Python的global变量的bug问题?小白求教!

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是测试不出准确值的,如果要改的话应该怎么改?有几种改法?为什么这么改?

asdhjhg
浏览 1480回答 0
0回答
随时随地看视频慕课网APP

相关分类

Python
我要回答