У меня есть следующий код, и я хочу сделать цикл 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;
}
На самом деле, вы должны сначала разбить функцию:
Цикл состоит из нескольких частей:
заголовок и обработка перед циклом. Может объявить некоторые новые переменные
условие, когда остановить цикл.
собственно тело цикла. Он изменяет некоторые переменные заголовка и/или передаваемые параметры.
хвост; что происходит после цикла и возврата результата.
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)
}