Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 - Fatal编程技术网

Java 如何制作带有数字的金字塔图案?

Java 如何制作带有数字的金字塔图案?,java,Java,如何在java中使用递归创建这个金字塔 1 222 33333 4444444 . . . 我创建了这个模式,但是行数增加了1,而不是2 static void recursion(int row, int k, int j,int c){ if(row>c){ return; } else{ if(k==row){ System.out.printl

如何在java中使用递归创建这个金字塔

     1
    222
   33333
  4444444
     .
     .
     .
我创建了这个模式,但是行数增加了1,而不是2

    static void recursion(int row, int k, int j,int c){
    if(row>c){
        return;
    }
    else{
        if(k==row){
        System.out.println();
        recursion(++row, 0,0,c);
        }
        else if(c-j>row){
        System.out.print(" ");
        ++j;
        recursion(row, k, j,c);
        }
        else{
        System.out.print(row+" ");
        recursion(row, ++k, j,c);
        }   
    }
结果:

     1 
    2 2 
   3 3 3 
  4 4 4 4 
 5 5 5 5 5 
试试这个

static void pyramid(int n, int i) {
    if (i > n) return;
    System.out.println(" ".repeat(n - i) + Integer.toString(i).repeat(i * 2 - 1));
    pyramid(n, i + 1);
}

结果:

    1
   222
  33333
 4444444
555555555
试试这个

static void pyramid(int n, int i) {
    if (i > n) return;
    System.out.println(" ".repeat(n - i) + Integer.toString(i).repeat(i * 2 - 1));
    pyramid(n, i + 1);
}

结果:

    1
   222
  33333
 4444444
555555555

这是一个使用现有设计逻辑的解决方案,或者我所理解的。我更改了一些变量名,以便能够记住所做的事情。(编码时使用有意义的名称)

递归(1,0,0,7);
静态无效递归(int行、int空间、int num、int总计){
如果(空间<总行){
系统输出打印(“”);
如果(总数>9)系统输出打印(“”);
递归(行、++空间、数量、总数);
}否则如果(数值<行*2-1){
字符串r=(行<10&&total>9)?“”+行:“”+行;
系统输出打印(r);
递归(行、空间、+num、总计);
}否则{
System.out.println();
递归(++行,0,0,总计);
}
}
}

这是一个使用现有设计逻辑的解决方案,或者按照我的理解。我更改了一些变量名,以便能够记住所做的事情。(编码时使用有意义的名称)

递归(1,0,0,7);
静态无效递归(int行、int空间、int num、int总计){
如果(空间<总行){
系统输出打印(“”);
如果(总数>9)系统输出打印(“”);
递归(行、++空间、数量、总数);
}否则如果(数值<行*2-1){
字符串r=(行<10&&total>9)?“”+行:“”+行;
系统输出打印(r);
递归(行、空间、+num、总计);
}否则{
System.out.println();
递归(++行,0,0,总计);
}
}
}

据我所知,您只输出了金字塔的一半。你有两个2而不是3,三个3而不是5,依此类推。我不确定你所说的直线增加1而不是2是什么意思。从我所知道的,你只输出了金字塔的一半。你有两个2而不是3,三个3而不是5,依此类推。我不确定你所说的行增加1而不是2是什么意思。使用我使用的在线编译器,我在42行时遇到堆栈溢出错误。我知道这可能只是一个家庭作业示例,但从技术上讲,使用递归将是一个糟糕的设计选择。使用我使用的在线编译器,我在42行时遇到堆栈溢出错误。我知道这可能只是一个家庭作业示例,但从技术上讲,使用递归将是一个糟糕的设计选择。