初学者提问:如何用C#打印杨辉三角……
非常感谢!!

解决方案 »

  1.   

    http://topic.csdn.net/u/20091125/23/bb004d3b-12ea-464c-87a6-8559f657a5b8.html
      

  2.   

    namespace MyYangHuiTriangle
    {
        class Program
        {
            static void Main(string[] args)
            {
                int length = 0;//杨辉三角形的长度 
                Console.Write("输入杨辉三角长度:");
                length = Convert.ToInt32(Console.ReadLine());//指定杨辉三角形的长度 
                int[][] a = new int[length][];//二维数组
                for (int i = 0; i < a.Length; i++)
                    a[i] = new int[i + 1];//遍历,赋值增量
                for (int j = 0; j < a.Length; j++)
                {
                    a[j][0] = 1;      //把第1列的元素都赋1 
                    a[j][j] = 1;      //把每1列最右边的元素都赋1 
                    for (int m = 1; m < a[j].Length - 1; m++)
                        a[j][m] = a[j - 1][m - 1] + a[j - 1][m];//其余元素的值由杨辉公式计算
                }
                for (int i = 0; i < a.Length; i++) //遍历数组输出杨辉三角形 
                {                for (int j = 0; j < a[i].Length; j++)
                        Console.Write("{0}\t", a[i][j]);
                    Console.Write("\n");
                }
                Console.Read();
            }
        }
      

  3.   

    Console.WriteLine("杨辉,俺三角了");
      

  4.   

    随便写个递归写法:        static void 打印_杨辉三角(int n, List<int> lastLine)
            {
                var res = new List<int>() { 1 };
                for (int i = 1; i < lastLine.Count; i++)
                    res.Add(lastLine[i] + lastLine[i - 1]);
                res.Add(1);
                res.ForEach(v => { Console.Write("{0}\t", v); });
                Console.WriteLine();
                if (lastLine.Count < n - 1)
                    打印_杨辉三角(n, res);
            }
      

  5.   

    打印_杨辉三角(8,new List<int>());
      

  6.   

    或者我们把尾递归写为迭代:        static void 打印_杨辉三角(int n, List<int> lastLine)
            {
            begin:
                var res = new List<int>() { 1 };
                for (int i = 1; i < lastLine.Count; i++)
                    res.Add(lastLine[i] + lastLine[i - 1]);
                res.Add(1);
                res.ForEach(v => { Console.Write("{0}\t", v); });
                Console.WriteLine();
                if (lastLine.Count < n - 1)
                {
                    lastLine = res;
                    goto begin;
                }
            }