Я думаю, что основная концепция, которую вы упускаете, заключается в том, что для получения результата рекурсивной функции (или любой другой функции) функция, к которой вы обращаетесь, должна возвращать значение *
Прямо сейчас, когда вы вызываете gcd_a
, рекурсивный вызов gcd_a
будет , в конечном итоге вернет значение, однако оно будет потеряно, так как функция, к которой вы обращаетесьresult не возвращает значение.
Чтобы показать вам, что это правда, давайте добавим оператор log, который выводит при возврате функции:
def gcd_a(a,b):
if a==0:
print('finally returning!', b)
return b
else:
gcd_a(b%a,a)
Теперь, если мы вызовем:
print(gcd_a(10, 99))
Мы получаем следующий вывод:
finally returning! 1
None
Где-то рекурсивный вызов gcd_a
обнаружил, что ваше условие равно True
, и возвратил 1
, однако эторезультат не печатается, потому что он не возвращается вашим вызовом gcd_a
* Если вы не делаете что-то странное, например, обновление глобальной переменной и т. д. ...