杨辉三角算法——数列&递归(c++)

杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

算法一:递归

//函数_计算杨辉三角第(n,r)个数
long combi2(int n, int r) {//n代表行数,r代表列数
	long res;
	if (n == 1 && r == 1)//设定第一行第一列数为1
		res = 1;
	else if (r == 0||r>n)//设定杨辉三角周边为0
		res = 0;
	else res = combi2(n - 1, r) + combi2(n - 1, r - 1);
	return res;
}

算法二:数列规律
定义每一行为数列{1,a[1],a[2],……,a[r-1]}
r[x]=r[x-1]*(n-x)/x
口语化:每一行第k个数=前一个数×(行数-k)/k

//函数_计算杨辉三角第(n,r)个数
long combi(int n, int r) {//n为行数,r为列数
	int i;
	long p = 1;
	if (r != 1) {//数列推算排除每行第一个数1
		for (i = 1; i < r; i++)
			p = p * (n - i) / i;
	}
	return p;
}

函数:打印杨辉三角

void YangHuiTrangle(int n) {
	for (int i = 1; i <= n; i++) {//控制行数
		for (int j = 1; j <= n-i; j++)
			cout << "  ";//第一个数前的空格
		for (int r = 1; r <= i; r++)//依次打印每一行的每个数
			cout << setw(3) << combi(i, r) << "  ";
		cout << endl;
	}
}

调用函数实现打印n行杨辉三角

#include <iostream> 
#include <iomanip>
using namespace std; 
void main(){
	YangHuiTrangle(12);
}

杨辉三角还有许多特殊的性质,如三角数列、方形数列、斐波那契数列等,之后可以研究一下利用这些性质输出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值