поток программы в рекурсивном методе в Java - PullRequest
0 голосов
/ 29 декабря 2018
class Test {

    int i=0;

    void method2() {

        if(i==6) return;
        System.out.print("before");
        i++;
        method2();
        System.out.println("after"):            
    }
}

Если я вызову method2() из другого класса, я хочу знать, как программа будет протекать здесь или почему выполняемый вывод.

1 Ответ

0 голосов
/ 29 декабря 2018

Глубокие знания рекурсии можно найти здесь https://en.m.wikipedia.org/wiki/Recursion_(computer_science) Что касается вашей программы, то она остановится, когда i = 6. В противном случае она продолжит печатать раньше.Это связано с тем, что при программировании поток управления никогда не пропускается, он следует за потоком управления, но это не значит, что он оставляет оператор rest, поэтому всякий раз, когда генерируется новый вызов функции, предыдущий статус функционирования помещается в стек один.на единицу, и, таким образом, стек продолжает увеличиваться, и когда, наконец, достигается конечное условие, он извлекает все вызовы функций один за другим из записи активации и выполняет требуемую обработку, и, таким образом, рекурсия работает.Требуется помощь стека для выполнения операций.Поток программы всегда следует порядку, когда вы вызываете его из любого места.Таким образом, поток программы остается таким же.Вы легко поймете работу, если запустите ее и добавите еще несколько операторов печати со значениями i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...