杨辉三角国际上称为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(" "); } } // 使用一维数组的杨辉三角程序 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(" "); } } 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