using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 杨辉三角 { public class Program { /// <summary> /// 主函数 /// </summary> /// <param name="args"></param> public static void Main( string[] args ) { PrintYangHui( 8 ); PrintYangHui( 8, 8 ); Console.ReadLine(); } /// <summary> /// 打印三角形 /// </summary> /// <param name="n"></param> /// <returns></returns> public static int[] PrintYangHui( int n ) { if ( n == 1 ) return Print( new int[] { 1 } ); if ( n == 2 ) { PrintYangHui( n - 1 ); return Print( new int[] { 1, 1 } ); } int[] pR = PrintYangHui( n - 1 ); int[] R = new int[n]; R[0] = 1; for ( int i = 1; i < R.Length - 1; i++ ) R[i] = pR[i] + pR[i - 1]; R[R.Length - 1] = 1; return Print( R ); } /// <summary> /// 打印出杨辉三角形 /// </summary> /// <param name="result"></param> public static int[] Print( int[] result ) { StringBuilder Space = new StringBuilder(); string spaceChar = " "; for ( int i = 0; i < result.Length; i++ ) Console.Write( result[i].ToString() + spaceChar ); Console.WriteLine(); return result; } /// <summary> /// 打印居中的杨辉三角形 /// </summary> /// <param name="n"></param> /// <returns></returns> public static int[] PrintYangHui( int TotalLevel, int Level ) { if ( Level == 1 ) return Print( TotalLevel, new int[] { 1 } ); if ( Level == 2 ) { PrintYangHui( TotalLevel, Level - 1 ); return Print( TotalLevel, new int[] { 1, 1 } ); } int[] pR = PrintYangHui( TotalLevel, Level - 1 ); int[] R = new int[Level]; R[0] = 1; for ( int i = 1; i < R.Length - 1; i++ ) R[i] = pR[i] + pR[i - 1]; R[R.Length - 1] = 1; return Print( TotalLevel, R ); } /// <summary> /// 打印居中的杨辉三角形 /// </summary> /// <param name="result"></param> public static int[] Print( int TotalLevel, int[] result ) { StringBuilder Space = new StringBuilder(); string spaceChar = " "; for ( int i = TotalLevel; i > result.Length; i-- ) Space.Append( spaceChar ); Console.Write( Space ); for ( int i = 0; i < result.Length; i++ ) Console.Write( FormatString( 5, result[i] ) + spaceChar ); Console.WriteLine(); return result; } /// <summary> /// 格式化数字串 /// </summary> /// <param name="Len"></param> /// <param name="num"></param> /// <returns></returns> public static string FormatString( int Len, int num ) { char[] outString; string strNum = num.ToString(); int startIndex = 0; if ( strNum.Length < Len ) { outString = new char[Len]; startIndex = ( Len - strNum.Length ) / 2; } else outString = new char[strNum.Length]; for ( int i = 0; i < outString.Length; i++ ) { if ( i >= startIndex && i < startIndex + strNum.Length ) outString[i] = strNum[i - startIndex]; else outString[i] = '_'; } return new String( outString ); } } } 程序截图