java简单递归

yyi*_*yin 1 java recursion

所以有一个递归方法(不能使用任何循环),它有一个参数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);
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

再次进入一些无限的递归.

这看起来像一个简单逻辑的简单程序,但我在条件检查方面遇到了麻烦,因为与n进行比较的内容不断变化.

我该如何解决这个问题?

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

谢谢

Daw*_*ica 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);
    }
}
Run Code Online (Sandbox Code Playgroud)