Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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,我在Java中使用递归,输出应该如下 ### ##* #** *** 我现在就是这样做的: public void recursion(int n){ if (n==0) { return; } else { System.out.print(number_pound(n)); System.out.println(); recursion(n-1); System.out.print(s

我在Java中使用递归,输出应该如下

###
##*
#**
***
我现在就是这样做的:

public void recursion(int n){
    if (n==0) {
        return;
    }
    else {
        System.out.print(number_pound(n));
        System.out.println();

        recursion(n-1);
        System.out.print(stars(n)); 
        System.out.println();

    }
}

private String number_pound(int level) {
    String s = "";
    for(int i=0;i<level;i++)
        s+="#";
    return s;
}

private String stars(int level) {
    String s = "";
    for (int i = 0; i < level; i++)
        s+= "*";
    return s;
}

public static void main(String[] args) {
    recursion rec = new recursion();
    rec.recursion(3);
}

我知道我的代码的问题是我使用System.out.println()来分隔两个部分,但是如果没有printline语句,数字pound将被卡在同一行中。

我相信这将完成您正在尝试的操作。它将打印磅数,然后是星星数,然后是新行。 由于需要指定输出字符串的长度,因此必须传递额外的长度参数。我相信没有长度是不行的

public void recursion(int n, int length){
    if (n<0) {
        return;
    }
    else {
        System.out.print(number_pound(n));
        System.out.print(stars(length - n)); 
        System.out.println();
        recursion(n-1, length);
    }
}
公共无效递归(int n,int length){

如果(n你错过了几件事:

  • 您首先要打印磅,然后开始,然后是新行,然后重复此过程
  • 每行上打印的星星数实际上是“通过级别的初始数字”
  • recursion()中需要这两个数字
  • 即使
    n
    0
    ,也要重复此过程
应该是这样的:

    public void recursion(int max, int n){
        if (n<0) {
            return;
        }
        else {
            System.out.print(number_pound(n));
            System.out.print(stars(max - n)); 
            System.out.println();
            recursion(max, n-1);

        }
    }

    private String number_pound(int level) {
        String s = "";
        for(int i=0;i<level;i++)
            s+="#";
        return s;
    }

private String stars(int level) {
    String s = "";
    for (int i = 0; i <level; i++)
        s+= "*";
    return s;
}

public static void main(String[] args) {
    recursion rec = new recursion();
    rec.recursion(3, 3);
}
公共无效递归(int max,int n){
if(n
公共类递归{
int k;
公共无效递归(int n){
如果(k==0){
k=n;
}

如果(nA变量
length
应表示最大数(在您的情况下为3)。您只需继续显示
n
#s和
length-n
星,直到n变为小于0为止

public void recursion(int n, int length){
    if(n>=0){
        System.out.print(number_pound(n));
        System.out.print(stars(length - n)+"\n");
        recursion(n-1, length);
    }
}
调用
recursion(3,3)
以获得输出。如果希望recursion()方法的签名仅为
(int n)
,则可以在调用recursion()之前,使用全局静态变量引用在主方法中为其分配最大数的最大数


显然,长度可以是任意整数0或更大。

迭代执行的所有操作都可以通过递归完成。递归调用缺少第二个参数。类名不能与成员方法相同:递归。
public class recursion {
     int k;                 
    public void recursion(int n){

      if(k==0){
        k=n;
       }
    if (n<0) {
        return;
    }
    else {

        System.out.print(number_pound(n)+stars(k-n));
        System.out.println();

        recursion(n-1);


    }
}

private String number_pound(int level) {
    String s = "";
    for(int i=0;i<level;i++)
        s+="#";
    return s;
}

private String stars(int level) {
    String s = "";
    for (int i = 0; i < level; i++)
        s+= "*";
    return s;
}

public static void main(String[] args) {
    recursion rec = new recursion();

    rec.recursion(3);
}
public void recursion(int n, int length){
    if(n>=0){
        System.out.print(number_pound(n));
        System.out.print(stars(length - n)+"\n");
        recursion(n-1, length);
    }
}
int length = 3;

private List<String> newList(String x, int length) {
    return Arrays.asList(new String[length]).stream().map(s -> x)
           .collect(Collectors.toList());
}

private void recurSymbol(String x, String y, int length) {
    List<String> list = newList(x, length);
    list.addAll(newList(y, this.length - length));
    System.out.println(String.join("", list));
    if(length > 0) recurSymbol(x, y, length - 1);
}

public void recursion(String x, String y) {
    recurSymbol(x, y, length);
}
recursion("#", "*");