java简单递归
因此有一个递归方法(不能使用任何循环),它有一个参数n,程序将输出2^n“*”,例如,如果n为2,则输出为****,如果n为3,则输出为******* 我被这个问题困住了,因为我遇到了一些无限递归问题 首先,我有这样的想法:但我很快意识到,n永远不会到达支票 ↑↑↑ 这应该是n+1(即使它不起作用) 然后我试了一下:java简单递归,java,recursion,Java,Recursion,因此有一个递归方法(不能使用任何循环),它有一个参数n,程序将输出2^n“*”,例如,如果n为2,则输出为****,如果n为3,则输出为******* 我被这个问题困住了,因为我遇到了一些无限递归问题 首先,我有这样的想法:但我很快意识到,n永远不会到达支票 ↑↑↑ 这应该是n+1(即使它不起作用) 然后我试了一下: public class test { public static void main(String[] args) { printPowerOfTwo
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比较的内容一直在变化
我应该如何解决这个问题
不使用任何辅助方法或创建任何静态变量。
谢谢你你需要利用这样一个事实: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);
}
}
public static void printPowerOfTwoStars(int n){
如果(n您需要使用这样一个事实,即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);
}
}
public static void printPowerOfTwoStars(int n){
如果(n)那太棒了!现在我只是好奇在这种情况下是否有办法使用Math.pow。谢谢!如果问题是打印3^n次,我将如何实现这个问题?使用相同的逻辑,3^n只是3^n-1,三倍(3^n-1)x3=3^n…你会怎么做?只是PrintPoweroftwastars(n-1)三次?好吧,你可以只使用三颗星星的打印能力(n-1)
在else
子句中执行三次。或者在else
子句中执行一个循环。或者使用二维递归-这可能是一个完全不同的问题。非常感谢!这太棒了!现在我只是想知道在这种情况下是否有方法使用Math.pow。谢谢!如果问题要打印3^n次,如何打印我能实现这个问题吗?用同样的逻辑,3^n只是3^n-1,三倍(3^n-1)x3=3^n…你会怎么做?它只是两个星星(n-1)的打印功率;
三次吗?好吧,你可以拥有三个星星(n-1)的打印功率
在else
子句中执行三次。或者在else
子句中放置一个循环。或者使用二维递归-这可能是另一个问题。非常感谢