Вопрос о взаимной рекурсии - PullRequest
2 голосов
/ 10 февраля 2011

Как изменить две функции, которые являются взаимно-рекурсивными, чтобы сделать их линейной рекурсией? Нужно ли иметь оба метода в одном методе?

1 Ответ

8 голосов
/ 10 февраля 2011

Вы должны иметь возможность просто "встроить" реализацию второго метода в первый метод.

То есть

public static void methA() {
    // snippet 1

    methB();

    // snippet 2
}

public static void methB() {
    // snippet 3

    methA();

    // snippet 4
}

становится

public static void methAB() {
    // snippet 1

    // snippet 3

    methAB();

    // snippet 2

    // snippet 4
}

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

...