Преобразование цикла 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;
}
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
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)
}

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