Я создаю метод рекурсии, который вычисляет базу логов 2. для журнала * (1) = должно быть 0. log * (4) = должно быть 2. но мой метод только распечатывает ноль и i не мог понять проблему. Может кто-нибудь мне помочь?Вычислить базу данных 2 рекурсию
public static int logCalculator(double n) {
if (n == 1) {
return 0;
} else {
return 1 + logCalculator(n * n);
}
}
Как вы называете 'logCalculator'? EDIT: Кстати, обратите внимание, что ветка else приведет к переполнению стека, так как вы больше никогда не достигнете «return 0». – StepTNT
'n * n' - это номер, с которым вы должны звонить. (А также, принимая аргумент 'double', тоже не поможет.) –
Я смущен, если вы вызываете' logCalculator (4) ', вы не получите' 0', вы получите переполнение стека исключение, так как ваша рекурсия никогда не завершится. В этом отношении, как это когда-либо должно прекратиться? Никакое число, не равное единице, когда оно будет последовательно квадратным, никогда не сходится к одному. – azurefrog