所以有一个递归方法(不能使用任何循环),它有一个参数n,程序将打印出2 ^ n“*”,例如,如果n为2,则输出为*** *,如果n为3,则输出为********。
我遇到了这个问题,因为我遇到了一些无限的递归问题。
首先我有这个:但我很快意识到n永远不会到达支票。
↑↑↑那应该是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进行比较的内容不断变化。
我该如何解决这个问题?
不使用任何辅助方法或创建任何静态变量。
谢谢
答案 0 :(得分:5)
你需要使用2 n
的力量仅为2 n-1
的力量的事实,加倍。你的基本情况是2的幂0是1。
public static void printPowerOfTwoStars(int n){
if(n <= 0){
System.out.print("*");
}
else{
printPowerOfTwoStars(n-1);
printPowerOfTwoStars(n-1);
}
}