/*杨辉三角形
在屏幕上显示杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...........
从杨辉三角形的特点出发,可以总结出:
1)第i行有i个值(设起始行为第1行)
2)对于第i行的第j个值:(i>=3)
当j=1或j=i时:其值为1
当j!=1且j!=i+1时:其值为第i-1行的第j-1个值与第i-1行第j个值之和
则杨辉三角中第x行y列的元素c(x,y)可表达为:
当y=1或y=x c(x,y)=1,否则c(x,y)= c(x-1,y-1)+c(x-1,y)
程序说明与注释:
*/
#include <iostream>
#include <iomanip>
using namespace std;
int c(int x,int y); //函数声明
int main()
{
int i,j,N;
cout<<"请输入要显示杨辉三角形的行数(1~12) N=";
cin>>N;
while(N>12)
{
cout<<"请重新输入 N=";
cin>>N;
}
cout<<N<<"行杨辉三角形如下所示:"<<endl;
for(i=1;i<=N;i++)
{
for(j=1;j<=24-2*i;j++) //控制输出第i行前面的(24-2*i)个空格
cout<<" ";
for(j=1;j<=i;j++)
cout<<setw(4)<<c(i,j); //输出第i行的第j个值
cout<<endl;
}
return 0;
}
int c(int x,int y) //求杨辉三角形中第x行第y列的值
{
int z;
if((y==1)||(y==x))
return 1; //若为x行的第1或第x+1列,则输出1
z=c(x-1,y-1)+c(x-1,y); //否则,其值为前一行中第y-1列与第y列值之和
return z;
}