Я пытаюсь найти самый высокий общий фактор, используя рекурсию. Я написал следующий код:
public class myclass {
public static void main(String[] args) {
func1(12,60);
}
public static int func1 (int p, int q){
if(q==0){
return p;
}
else {
return func1(q, p%q);
}
}
}
Код работает правильно и выдает желаемый результат, но при пробном запуске это создает небольшую путаницу, что когда q встречает свое значение 0, тогда if выполняется и возвращает значение pто есть 12, затем управление возвращается к строке, где функция вызывается со значениями (60, 12), здесь p = 60, но при пробном запуске визуализатора Java этот шаг также возвращает значение p = 12, как показано в следующем выводе, который закрывается скобкамихотя этот шаг содержит значение p = 60?
(func: 5 p 60 q 12 Возвращаемое значение 12) func: 5 p 12 q 60 main: 7
Я обсуждал этот вопрос, ноЯ получил тот же ответ, что когда возвращается первое значение p, то это значение также должно быть возвращено при возврате, но проблема в том, что если так, то здесь p = 60, какова цель этого?