Java - команда возврата - PullRequest
       5

Java - команда возврата

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

У меня есть эта функция в Java, которая вызывает себя несколько раз (т. Е. Является рекурсивной), исходя из условия, есть и команда возврата.

public class ReturnTest {

        public static void main(String[] args){
            returnTest(1);
        }

        public static void returnTest(int i){
            System.out.println(" i =>  " + i);
            if(i >= 2) {
                System.out.println(" calling return ");
                return;
            }
            System.out.println(" calling RT1, i =>  " + i);
            returnTest(++i);
            System.out.println(" calling RT2, i =>  "  +i);
            returnTest(++i);
        }
} 

Как работает команда возврата в этом случае?Я ожидал, что команда return выйдет из начального вызова returnTest (), однако, что происходит, она переходит к следующей команде возврата

, т.е. при возврате (когда i> = 2), она вызывает следующее

 System.out.println(" calling RT2, i =>  "  +i);
 returnTest(++i);

Я пытаюсь понять, как работает возврат (особенно в этом случае), пожалуйста.помогите уточнить.

спасибо!

1 Ответ

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

Надеюсь, вам помогут следующие детали:

  • вы вызываете метод с помощью 1
  • >=2, равным false , поэтому продолжайте
  • метод вызывается с помощью 2 (из-за предварительного увеличения)
    • >=2 равно true , поэтому возвращает на верхний уровень
  • метод вызывается с помощью 3 (из-за предварительного увеличения)
    • >=2 равно true , поэтому возвращает до верхнего уровня
  • больше нет кода, конец выполнения
...