前言
杨辉三角,是二项式系数在三角形中的一种几何排列。如下图所示,

杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。
本文将通过以下几个方面来实现杨辉三角:
1.用二维数组实现杨辉三角;
2.用一维数组实现杨辉三角;
2.1用两个一维数组实现杨辉三角;
2.2用一个一维数组实现杨辉三角;
3.不使用数组实现杨辉三角(使用for循环实现)
一、用二维数组实现杨辉三角
使用二维数组实现杨辉三角,也就是说,将杨辉三角看成是二维数组,有对应的行数和列数,例如,第1行第1列代表数1,第5行第2列代表4,如下图所示。

这里我们使用动态内存去申请二维数组,而二维数组可以看作是竖向的指针数组去指向横向的一维数组:

具体的实现过程如下代码所示:
void YangHui2(const int n) //利用二维数组去实现杨辉三角
{
//二维数组可以看作是竖向的指针数组去指向横向的一维数组
int** p = (int**)malloc(n * sizeof(int*)); //先申请竖的指针
for (int i = 0; i < n; i++) //再用竖的指针去指向横向的数组
{
p[i] = (int*)malloc(n * sizeof(int));
}
assert(p != NULL); //断言
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
//特殊处理,防止数组越界
if (j == 0 || i == j) //每一行的第一个值和最后一个值均为1
{
p[i][j] = 1;
}
else //其他的均是公式:当前值 = 上一行本列的值 + 上一行上一列的值
{
p[i

最低0.47元/天 解锁文章
4258





