杨辉三角国际上称为Pascal三角形。
杨辉三角与菲波拉契数列也是有关系的,看以下的图就知道了。
这里给出来两种方法的实现,一是使用二维数组来存储杨辉三角,二是使用一维数组来存储杨辉三角并且一边计算一边输出结果。
使用一维数组作为存储,实现打印杨辉三角,需要的技巧更高一些。
本文插图来自维基百科。
#include <stdio.h>
// 使用二维数组的杨辉三角程序
void pascal1()
{
int n, i, j;
scanf("%d", &n);
int pascal[n][n];
for(i=0; i<n; i++)
for(j=0; j<=i; j++) {
if(j == 0 || j == i)
pascal[i][j] = 1;
else
pascal[i][j] = pascal[i-1][j] +pascal[i-1][j-1];
}
for(i=0; i<n; i++) {
for(j=0; j<=i; j++)
printf("%d ", pascal[i][j]);
printf("\n");
}
}
// 使用一维数组的杨辉三角程序
void pascal2()
{
int n, i, j;
scanf("%d", &n);
int pascal[n];
for(i=0; i<n; i++) {
for(j=i; j>=0; j--) {
if(j == i || j == 0)
pascal[j] = 1;
else
pascal[j] += pascal[j-1];
printf("%d ", pascal[j]);
}
printf("\n");
}
}
int main(void)
{
pascal1();
pascal2();
return 0;
}
两种打印杨辉三角的程序,分别输入阶数5和6,其输出结果如下:
5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1