Используйте рекурсию в Java, чтобы вернуть двоичный логарифм заданного числа - PullRequest
1 голос
/ 04 августа 2020

Это скриншот проблемы, которую я решаю:

Скриншот

Это мой код. Он работает нормально, но проблема в том, что если n <= 0, я хочу вернуть «Не определено» тем же методом. Но, как вы можете видеть, тип возврата моего метода - <code>int. Итак, как я могу это сделать?

public static void main(String[] args) {
    System.out.println(recursiveBinaryLog(1));
    System.out.println(recursiveBinaryLog(8));
    System.out.println(recursiveBinaryLog(0));
    System.out.println(recursiveBinaryLog(-2));
}

static int recursiveBinaryLog(int n) {
    if (n <= 0)
        return 0;
    else
        return (1 + recursiveBinaryLog(n / 2));
}

1 Ответ

2 голосов
/ 04 августа 2020

Чтобы метод recursiveBinaryLog возвращал String вместо int, выполните рекурсию в отдельном методе.

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

static String recursiveBinaryLog(int n) {
    if (n <= 0)
        return "Undefined";
    return String.valueOf(recursiveBinaryLog0(n));
}

private static int recursiveBinaryLog0(int n) {
    return (n == 1 ? 0 : 1 + recursiveBinaryLog0(n / 2));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...