站立在技巧的Java递归三角

时间:2012-09-19 02:28:33

标签: java recursion geometry

我想知道如何在它的尖端而不是它的底座上用星号创建三角形。

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

    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;

         }


}

2 个答案:

答案 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)

@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;
}