C# codeusing 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 );
}
}
}