0
`
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.'
これはフィボナッチの再帰呼び出しの数を追跡するために、グローバル変数を使用してのバージョンがあり、私の質問は使用せずにバージョンを記述する方法でありますグローバル変数?Pythonでグローバル変数を使用せずに、フィボナッチ数の再帰呼び出しの数を追跡2.7
`
fibをクラスのメソッドにすると、インスタンス変数で呼び出し回数を追跡できます。 – jq170727
@ jq170727、それは基本的にグローバル変数を使用するのと同じです。 –
@ JohnLaRooy - 私たちはクラスFibを持ち、2つのインスタンスf1、f2があるとします。それぞれは独自のカプセル化されたコールカウントを持ちます。状態の一部がグローバルな名前空間に存在しないため、グローバル変数とは基本的に同じだとは思わない - それにアクセスする唯一の方法はf1/f2インスタンス参照によるものだ。 – jq170727