У меня есть два фрагмента кода на основе python, где вы найдете GCD с положительными целыми числами.python find GCD рекурсивно встречается с ошибкой
Вот правильный:
def gcdRecur(a, b):
if b == 0:
return a
return gcdRecur(b, a%b)
Вот один с ошибкой:
def gcdRecur(a, b):
a = max(a, b)
b = min(a, b)
if b == 0:
return a
return gcdRecur(b, a%b)
Это легко увидеть различия между этими двумя частями кода. И я знаю, что нет необходимости добавлять
a = max(a, b)
b = min(a, b)
до контроля потока. Я не могу найти логических ошибок в последнем коде, но он печатает неверный результат.
------use former code find GCD of 182 ans 224------
print out 14
------use former code find GCD of 182 ans 224------
print out 224(wrong answer)
Поэтому я предполагаю, что это может быть связано с принципом рекурсии в питоне, который я вообще не знаю. Может ли кто-нибудь помочь мне и рассказать мне, что происходит на T T.
Спасибо.
«Я не могу найти какие-либо логические ошибки в последнем коде «Тогда вы знаете, что ошибка не в последнем коде. Что происходит, когда вы вызываете gcdRecur (5, 10)? 'a' становится 10, затем в следующей строке вы выполняете' b = max (a, b) ', который по существу является' b = max (10, 10) '. Таким образом, если 'b> a' после двух ваших строк, 'a' и' b' будет __always__ быть одинаковым значением. –
@VincentSavard Бог, я этого не замечал! Большое спасибо. –
'a, b = отсортировано ((a, b), reverse = True)' –