Каждый раз, когда я запускаю этот алгоритм рекрусии, моя переменная устанавливается в 0, как ее решить - PullRequest
2 голосов
/ 10 мая 2019

Я написал алгоритм, который вычисляет количество действий, необходимых для того, чтобы добраться до номера. Но каждый раз, когда происходит рекурсивная функция, переменная «temp» сбрасывается на 0.

Как я могу решить эту проблему, чтобы она не сбрасывалась каждый раз, и она состоит из подсчитанного значения?

public static int minOps(int x, int y) {
    int temp = 0;
    if (y <= x)
        return temp;
    if (y / 2 > x) {
        temp++;
        return minOps(x, y / 2);
    } else {
        minOps(x, y - 1);
        temp++;
    }
    return temp;
}

1 Ответ

9 голосов
/ 10 мая 2019

По полностью исключить temp (вам это не нужно). Как,

public static int minOps(int x, int y) {
    if (y <= x) {
        return 0;
    }
    if (y / 2 > x) {
        return 1 + minOps(x, y / 2);
    }
    return 1 + minOps(x, y - 1);
}

И используйте фигурные скобки, даже если они не обязательны.

...