Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java简单递归_Java_Recursion - Fatal编程技术网

java简单递归

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

因此有一个递归方法(不能使用任何循环),它有一个参数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比较的内容一直在变化

我应该如何解决这个问题

不使用任何辅助方法或创建任何静态变量。


谢谢你

你需要利用这样一个事实: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
子句中放置一个循环。或者使用二维递归-这可能是另一个问题。非常感谢