Java 对void打印方法使用递归

Java 对void打印方法使用递归,java,recursion,Java,Recursion,对于我家庭作业的第一个问题,它涉及通过使用递归的void方法打印出一串星号。打印的星号数基于2乘以n的幂(n是该方法的参数) i、 e 打印(1)打印出“**” 打印(2)打印出“***” 等等 老实说,到目前为止,我只有这个,但它不使用递归 public void print(int num) { int sum = (int) Math.pow(2, num); for (int i = 0; i < sum; i++) { System.out.print("*"); }

对于我家庭作业的第一个问题,它涉及通过使用递归的void方法打印出一串星号。打印的星号数基于2乘以n的幂(n是该方法的参数)

i、 e

打印(1)打印出“**”

打印(2)打印出“***” 等等

老实说,到目前为止,我只有这个,但它不使用递归

public void print(int num) {
int sum = (int) Math.pow(2, num);
for (int i = 0; i < sum; i++) {
    System.out.print("*");
}
public void打印(int num){
int sum=(int)Math.pow(2,num);
对于(int i=0;i

我已经被困了好几个小时,不知道该怎么办,所以如果有人愿意帮助我,我将不胜感激!

你应该先阅读递归。只要确定你的终止条件是什么。然后再到处玩

public void printUtil(int num) {
// just a util method to get the sum
int sum = (int) Math.pow(2, num); 
print(sum);
}

public void print(int sum){
if(sum == 0) return; // terminating condition
System.out.print("*");
print(--sum); // function calling itself
}

首先阅读。如果仍有疑问,然后询问!:)

请参阅:最可能的预期解决方案是使用两个递归调用,每个调用打印一半的星号。感谢您的回复!我对代码的布局有类似的思考过程,但我遇到的唯一问题是,它都应该在一个打印方法中,因此如果您在开始计算总和时,它会打印出2^3的星号,然后是2^2,等等。这太多了。如果您在系统上尝试过,此代码会抛出
堆栈溢出。
。我的错误。我应用了后减量,而不是现在纠正的前减量。
void print(int num) {
    if (num == 0) {
        System.out.print("*");
    } else {
        print(num - 1);
        print(num - 1);
    }
}