Java 如何制作带有数字的金字塔图案?
如何在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
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行时遇到堆栈溢出错误。我知道这可能只是一个家庭作业示例,但从技术上讲,使用递归将是一个糟糕的设计选择。