0

我想知道如何用星号在其尖端而不是在其底部创建三角形。

我有让它站在它的基础上的代码:

    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;

         }


}
4

2 回答 2

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 而不是字符串。

只是重读你的问题。

在你追求这样的三角形之后

****
***
**
*

您需要在调用递归时进行更改。

IE

  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);
   }
于 2012-09-19T02:40:45.577 回答
0

@Leon,尽管您的回答是正确的,但它错过了他的部分问题。

编辑:@Leon,看来您已经更新了答案。我的不再需要了。

对于站立在其尖端的三角形,请尝试以下操作

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;
}
于 2012-09-19T03:02:03.273 回答