Найти минимальную цифру NaturalNumber n

Я пытаюсь найти минимальную цифру натурального числа, когда я вызываю этот метод. Я должен использовать рекурсию. Где я ошибаюсь? (Я хотел бы также использовать мою общую структуру кода)

private static int minDigit(NaturalNumber n) {
    int min = 9;
    if (!n.isZero()) {
        int k = n.divideBy10();
        k = minDigit(n);
        if (k < min) {
            min = k;
        }
    }
    return min;
}

1 ответ

  1. Для того, чтобы рекурсия работала, рекурсивный вызов должен быть сделан на меньшей версии проблемы, так что в конечном итоге он становится настолько маленьким, что ответ очевиден. Но ваш код делает рекурсивный вызов по тому же номеруn, с которым он был вызван, и поэтому никогда не переходит в это состояние.

    Далее, Если n равно нулю, то не должна ли минимальная цифра быть 0? Если nникогда не может быть 0, почему вам нужно проверить его?