杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。
“杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
就是这个看上去平平无奇的数字三角形,却有一些非常奇妙甚至是神秘的特性。
杨辉三角的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和,以此类推。
那我们该怎么打印杨辉三角呢?
但我们把每一行都对齐(如下),就像一个二维数组打印一样。
所以我们可以用二维数组存储杨辉三角
1 1 1 1 2 1 1 3 3 1 ……
代码实现如下:
#include<stdio.h> int main() { int n = 0; int i = 0; printf("请输入打印的行:"); scanf("%d",&n); int** arr; arr = (int**)malloc(n * sizeof(int*)); for (i = 0; i < n; i++) { arr[i] = (int*)malloc(n * sizeof(int)); } for (i = 0; i < n; i++) { int j = 0; for (j = 0; j < n - i; j++) { printf(" "); } for ( j = 0; j <= i; j++) { if (j == 0 || j == i) { arr[i][j] = 1; } else if(i>1 && j>0) { arr[i][j] = arr[i - 1][j - 1] + arr[i-1][j]; } printf("%d ", arr[i][j]); } printf("\n"); } return 0; }