【题目】在屏幕上打印杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
【分析】
杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。
》杨辉三角有几个重要的性质
- 杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1。
- 第
行的数字个数为
个。
- 第
行的第
个数字为组合数
。
- 第
行数字和为
。
- 除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和(也就是说,第
行第
个数字等于第
行的第
个数字与第
个数字的和)。这是因为有组合恒等式:
。可用此性质写出整个杨辉三角形。
【解法】
》在这里,我用第三个性质来解决这个问题,即第行的第
个数字为组合数
。
代码如下:
#include<iostream>
using namespace std;
//求组合数
int C(int x,int y)
{
int z;
if((y==1)||(y==x+1))
return 1;
z=C(x-1,y-1) + C(x-1,y);
return z;
}
int main()
{
int i,j;
int n;
cout<<"请输入要打印的行数:"<<endl;
cin>>n;
cout<<endl<<" "<<endl;
for(i=0;i<n;i++)//输出n行
{
for(j=0;j<=n-i;j++)
cout<<" ";//输出第i行前面的空格
for(j=1;j<i+2;j++)
cout<<C(i,j)<<" ";//输出第i行第j个数
cout<<endl;
}
return 0;
}
【运行结果】