Проблема в возвращаемом значении в рекурсии, когда мы отслеживаем возвращаемое значение в стеке - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь найти самый высокий общий фактор, используя рекурсию. Я написал следующий код:

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, какова цель этого?

...