Таким образом, существует рекурсивный метод (не может использовать какой-либо цикл), который имеет один параметр n, и программа будет печатать 2^n "*", например, если n равно 2, выход ****, а если n равно 3, то выход будет ********.java Простая рекурсия
Я застрял в этой проблеме, потому что столкнулся с некоторыми проблемами бесконечной рекурсии.
Сначала у меня было это: но я скоро понимаю, что n никогда не достигнет чек.
↑↑↑ Это должно было быть п + 1 (даже если он не работает)
Тогда я попытался это:
public class test {
public static void main(String[] args) {
printPowerOfTwoStars(3);
}
public static void printPowerOfTwoStars(int n){
n = (int)Math.pow(2, n);
if(n == 0){
return;
}
else{
System.out.print("*");
printPowerOfTwoStars(n-1);
}
}
}
Столкнулся некоторой бесконечной рекурсии еще раз.
Это похоже на простую программу с простой логикой, но у меня проблемы с проверкой состояния, потому что то, что сравнивается с n, продолжает меняться.
Как исправить эту проблему?
Без использования какого-либо вспомогательного метода или создания каких-либо статических переменных.
Спасибо
Это великолепно! Теперь мне просто интересно, есть ли способ использовать Math.pow в этом случае. Спасибо! – yyin
Я думал, что все дело в том, что _not_ использовать 'Math.pow'. –
Если бы вопрос заключался в том, чтобы печатать 3 раза, как бы реализовать эту проблему? Используя ту же логику, ** 3^n является просто 3^n-1, утроенным (3^n-1) x 3 = 3^n ** ... как бы вы это сделали? Это просто 'printPowerOfTwoStars (n-1);' три раза? – yyin