gpt4 book ai didi

Java:递归打印钻石

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:32 26 4
gpt4 key购买 nike

您将如何使用 Java 递归打印仅给定尺寸的钻石?

大小为 5 会产生:

 ***** *****
**** ****
*** ***
** **
* *

* *
** **
*** ***
**** ****
***** *****

我目前的代码

public static void dia(int statSize, int size,int count) {

int statSizeLarge = (statSize*2)+1;

// Params:
// statSize == static size, never change this
// size == variable size, change this
// count == counter

if(size==0) {
System.out.println();
} else {

// is the counter smaller then the size
// if yes, increment and keep printing
if(count<size){
System.out.print("*");
}



// is greater then size?
// if yes, move on, print
// a few more stars
if((count<=statSizeLarge)){
if(count<statSize+1 && (count>size)){
System.out.print(" ");
}else if (count>size+1){
System.out.print("*");
} else {}
dia(statSize,size,count+1);
}



// reset count, move to next element
if(count>=statSizeLarge) {
count = 0;
System.out.println();
dia(statSize,size-1,count);
}



} // ends Else

}

输出:

Enter commands:
diamond 3
******
** ****
* ****




* ****




** ****
* ****




* ****

最佳答案

要创建一个更大的菱形,取一个较小的菱形并添加两个额外的行和列。在下面的图表中,为了清楚起见,我用点替换了空格。在第二个菱形中,新添加的字符以粗体显示。

              *****.*****  <-- extra row****.****     ****...*******...***     ***.....*****.....**     **.......***.......*     *.........*......... --> ...........*.......*     *.........***.....**     **.......*****...***     ***.....*******.****     ****...****              *****.*****  <-- extra row                   ^^                   ||                   extra columns

Your recursive function should print the first row, then print a smaller diamond with two extra columns in the middle, then the last row.

In pseudocode:

void diamond(stars, spaces) {
if (n == 0) {
print(' ' * spaces)
} else {
print('*' * stars, ' ' * spaces, '*' * stars)
diamond(stars - 1, spaces + 2)
print('*' * stars, ' ' * spaces, '*' * stars)
}
}

由于这是一个学习练习,我不会向您提供完整的 Java 源代码 - 您可以尝试自己编写。在这里你可以看到它在 Python 中在线运行,只是为了让你看到算法有效:

关于Java:递归打印钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com