As ex. Я пишу fibonancci код рекурсией -Как рассчитать количество рекурсивных вызовов?
def fib(n):
x = 0
if n == 0 or n == 1:
return 1
else:
print('computing : ', n) # this show the recursive call.
x = x +1
print('recursive call no total : ',x) # this show the how many number of recursive call.
return fib(n-1) + fib(n-2)
но печать, рекурсивный вызов №: 1 рекурсивный вызов №: 1 и это продолжаться с 1.
theres возникли некоторые проблемы. Я не могу понять. Значение x не увеличивается, так как это не итеративные процессы. Но как я могу увеличить значение x через каждый рекурсивный вызов?
Используя глобальную переменную, я попытался решить проблему. Код может нравится
ценам нижеdef fib(n):
global numcalls
numcalls += 1 #this will increment with every fib() call
if n ==0 or n ==1:
return 1
else:
return fib(n-1) + fib(n-2)
print('numcalls =', numcalls)
Тогда вызов функции с, numcalls = 0 Фибо (5)
ли код выше нормально? Если нет, то предложите что-нибудь о ошибках.
make 'x' аргумент, который по умолчанию равен' 0', а затем передает 'x + 1' рекурсивным вызовам. Это то, что вы делаете, когда вы вызываете функцию и хотите, чтобы у нее был доступ к какой-либо конкретной информации, вы передаете ее в качестве аргумента. –
или сделать простую глобальную переменную и прирастить ее в начале функции. –
Можно ли показать, как передать x + 1 в рекурсивный вызов. Я понимаю ваши первые шаги. Поэтому я могу написать def fib (n, x = 0). Но как сделать шаги гнезда? @tadhg McDonald-Jensen – user6359012