如何使用单个变量并在单个循环中打印三角形?

时间:2010-07-09 12:25:44

标签: c# printing geometry

一位同事让我用一个变量和一个循环打印一个三角形(任何形状)。我是这样做的:

Program.cs的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Triangle
{
    class Program
    {
        static void Main(string[] args)
        {

            var triangle = "*";
            do { Console.WriteLine(triangle); }
            while ((triangle += "*").Length < 10);

            Console.ReadLine();
        }
    }
}

我希望必须有更好的方法来做到这一点。你知道吗?

修改

  

蒂姆问我如何在不使用变量和循环的情况下打印三角形。哎哟!   我以为还在想:)你   知道怎么做?

5 个答案:

答案 0 :(得分:2)

参数是否算作变量?

Console.WriteLine(
    Enumerable.Range(2, 9)
              .Aggregate("*", (s, i) => s + Environment.NewLine + new string('*', i)));

答案 1 :(得分:1)

我喜欢你的解决方案,为什么你需要更好的方法?

就个人而言,我已经选择了一个while循环:

        var triangle = "";
        while ((triangle += "*").Length < 10)
            Console.WriteLine(triangle);

但这并没有太大改变。

答案 2 :(得分:1)

使用递归来消除循环 - 你仍然需要一个变量。

OTTOMH(加上没有在loooooooong时间编码C#)

bool PrintLine(int NumStars)
{
 Console.WriteLine(space(NumStars).Replace (" ", "*"));
 if (NumStars < 20)
  PrintLine (NumStars);
}

答案 3 :(得分:0)

Process.Start("http://www.google.com/images?q=triangle");

答案 4 :(得分:0)

没有循环,没有变量(你明白了)

Console.WriteLine("*");
Console.WriteLine("**");
Console.WriteLine("***");
Console.WriteLine("****");
Console.WriteLine("*****");

符合要求。 ;)