1 题目
打印出杨辉三角形(要求打印出10行)
2 分析
杨辉三角结构如下所示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
2.1 方法1-二项式定理
第一眼看到杨辉三角很容易可以想到高中的数学知识–二项式定理 ,当从开始,它的展开式每项的系数恰好对应杨辉三角的每一行。
那么,算出每一项的系数可以通过公式,递归计算阶层,见实现1
2.2 方法2-按规律
根据杨辉三角的特点:
- 每行端点与结尾的数为1
- 每个数等于它上方两数之和
见实现2
3 实现
3.1 实现1-二项式定理
#include<stdio.h>
#define N 10 // 打印的行数
int fact(int n) {
if (n == 1 || n == 0) {
return 1;
}
return n * fact(n - 1);
}
int main() {
for (int i = 0; i < N; i++) {
for (int j = 0; j <= i ; j++) {
//二项式定理展开求系数公式
int k = fact(i) / (fact(i-j) * fact(j));
printf("%d ", k);
}
printf("\n");
}
return 0;
}
3.2 实现2-按规律
#include <stdio.h>
int main() {
int i, j, a[10];
a[0] = 1;
printf("\n%4d", a[0]);
for (i = 1; i < 10; i++) {
a[i] = 1;
for (j = i-1; j>0; j--) {
a[j] = a[j-1]+a[j];
}
printf("\n");
for (j = 0; j<=i; j++) {
printf("%4d", a[j]);
}
}
}
4 运行结果
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
来源:CSDN
作者:syzdev
链接:https://blog.csdn.net/syzdev/article/details/104340456