打印杨辉三角

【题目】在屏幕上打印杨辉三角

              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    1   5   10   10   5   1

【分析】
杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。

》杨辉三角有几个重要的性质

  1. 杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1。
  2. n行的数字个数为n个。
  3. n行的第k个数字为组合数C_{n-1}^{k-1}
  4. n行数字和为2^{n-1}
  5. 除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和(也就是说,第n行第k个数字等于第n-1行的第k-1个数字与第k个数字的和)。这是因为有组合恒等式:C_{n}^{i}=C_{n-1}^{i}+C_{n-1}^{i-1}。可用此性质写出整个杨辉三角形。

【解法】

》在这里,我用第三个性质来解决这个问题,即第n行的第k个数字为组合数C_{n-1}^{k-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;
}

【运行结果】


 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值