Преобразование цикла while в рекурсивный

У меня есть следующий код, и я хочу сделать цикл while рекурсивным, так как мне нужна рекурсивная функция n-го корня числа, но я не знаю, как это сделать

public static void main(String[] args) {
    float x = 0f;
    int n = 0;
    float result = 0f;
    float aux = 0.00001f;
    Scanner sc = new Scanner(System.in);

    x = sc.nextFloat();
    n = sc.nextInt();

    if (n == 0) {
        result = 1;
    } else {
        while (nthPower(result, n) < x) {
            result = result + aux;
        }
    }

    System.out.printf("%.4f\n", result);
}

public static float nthPower(float x, int n) {
    float tmp = 1;

    for (int i = 0; i < n; i++) {
        tmp = tmp * x;
    }

    return tmp;
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле, вы должны сначала разбить функцию:

Цикл состоит из нескольких частей:

  • заголовок и обработка перед циклом. Может объявить некоторые новые переменные

  • условие, когда остановить цикл.

  • собственно тело цикла. Он изменяет некоторые переменные заголовка и/или передаваемые параметры.

  • хвост; что происходит после цикла и возврата результата.

foo_recursive(params){
    header
    return foo_recursion(params, header_vars)
}

foo_recursion(params, header_vars){
    if (!condition){
        return tail
    }

    loop_body
    return foo_recursion(params, modified_header_vars)
}

Другие вопросы по теме