杨辉三角

/*杨辉三角形
在屏幕上显示杨辉三角形
            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;
}

你可能感兴趣的:(c)