杨辉三角性质
1、每个数等于它上方两数之和。(打印杨辉三角最重要的一条性质,下面不重要)
2、每行数字左右对称,由 1 开始逐渐变大。
3、第n 行的数字有n+1 项。
4、第n 行数字和为2(n-1) (2 的(n-1) 次方)。
5 (a+b) n 的展开式中的各项系数依次对应杨辉三角的第(n+1) 行中的每一项。
6、第n 行的第m个数和第n-m 个数相等,即C(n,m)=C(n,n-m) 。
打印杨辉三角
首先我们把杨辉三角想象成一个二维数组,所以得定义一个二维数组
int arr[m][m] = { 0 };
因为我这里只想打印10行得杨辉三角,但是vs不支持c99,所以得这样定义一下#define m 10
,方便以后想打印几行就打印几行
注意杨辉三角图片,第一列和最后一列都为1
所以代码首先这样写``
int x = 0;
int y = 0;
//行
for (x = 1; x <= m; x++)
{
//列
for (y = 1; y <= x; y++)
{
if (y == 1 || y == x)
{
arr[x][y] = 1;
printf("%d ", arr[x][y]);
}
这里用arr[x][y]=1;使因为杨辉三角性质下面一个数,等于上面两个数之和,
接下来我们看看下面得代码
//不是第一列和最后一列
else
{
arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];
printf("%d ", arr[x][y]);
}
该数就加上,arr[x - 1][y - 1] ,arr[x - 1]
全部代码
#define m 10
int main()
{
int arr[m][m] = { 0 };
int x = 0;
int y = 0;
for (x = 1; x <= m; x++)
{
//打印数字
for (y = 1; y <= x; y++)
{
if (y == 1 || y == x)
{
arr[x][y] = 1;
printf("%d ", arr[x][y]);
}
else
{
arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];
printf("%d ", arr[x][y]);
}
}
printf("\n");
}
return 0;
}