我想知道如何在它的尖端而不是它的底座上用星号创建三角形。
我有代码让它站在它的基础上:
public static String printTriangle (int count)
{
if( count <= 0 ) return "";
String p = printTriangle(count - 1);
p = p + "*";
System.out.print(p);
System.out.print("\n");
return p;
}
但是后来我一直坚持如何拥有最多的明星,然后是最低的,等等。我正在考虑使用(count-p)从减少量中减去行的输入,但后来我被这个想法搞糊涂了,因为p是字符串。
编辑:我尝试使用原始方法更改printTriangle(count - 1)的位置而不进行迭代,每行得到1颗星;我该如何解决这个问题?
public class triangles
{
public static void main(String[] args)
{
printTriangle(5);
}
public static String printTriangle (int count)
{
if( count <= 0 ) return "";
String p = "";
p = p + "*";
System.out.print(p);
System.out.print("\n");
p = printTriangle(count - 1);
return p;
}
}
答案 0 :(得分:1)
对我来说,你似乎错过了递归函数中的一个循环,为每一行的* s添加了正确的数字。
public static String printTriangle (int count)
{
if( count <= 0 ) return "";
String p = printTriangle(count - 1);
for (int i=0; i<count; i++)
{
p = p + "*";
}
p += "\n";
return p;
}
并调用代码看起来像
String triangle = printTriangle(4);
System.out.println(triangle);
它产生
*
**
***
****
此外,我会使用StringBuilder而不是字符串。
重新阅读你的问题。
你在这样的三角形之后****
***
**
*
您需要在调用递归时更改。
即
public static String printTriangle (int count)
{
if( count <= 0 ) return "";
String p="";
for (int i=0; i<count; i++)
{
p = p + "*";
}
p += "\n";
return p + printTriangle(count - 1);
}
答案 1 :(得分:0)
对于站在其尖端的三角形,请尝试以下
public static String printTriangle (int count)
{
if( count <= 0 ) return "";
String p = "";
for (int i=0; i<count; i++)
{
p = p + "*";
}
p += "\n";
p += printTriangle(count - 1)
return p;
}