1.
数学知识引入:
二项式定理:a+bn=k=0nnkakbn-k
(不妨令a = b =1),可得到杨辉三角与二项式定理的关系:
第0行 1
第1行 1 1 (
1+1)^
1
=
C
1
0
+
C
1
1
第2行 1 2 1 (
1+1)^
2
=
C
2
0
+
+C
2
1
+
C
2
2
1 3 3 1 (
1+1)^
3
=
C
3
0+
C
3
1
+C
3
2
+C
3
3
1 4 6 4 1 ………………
1 5 10 10 5 1
易知:杨辉三角的每一项分别对应二项展开式的的二项式系数,故只需计算出相应位置的二项式系数即可
题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
代码如下(示例):
class YangHui { public int fun(int n) {//定义计算阶乘的方法(由组合数计算公式可得) if (n == 0 || n == 1) { return 1; } else { return fun(n - 1) * n; } } } public class Test { public static void main(String[] args) { int i, j; YangHui Y = new YangHui(); for (i = 1; i <= 9; i++) {// i表示行 for (j = 10; i < j; j--) { System.out.print("\t");//打印每一行开头的空格 } if (i == 1) {//第一行单独讨论 System.out.println(1); } else { for (int k = 0; k <= i - 1; k++) { int ans1 = Y.fun(i - 1); int ans2 = Y.fun(k); int ans3 = Y.fun(i - 1 - k); System.out.print(ans1 / (ans2 * ans3)); System.out.print("\t\t"); } } System.out.println();//每行末尾进行换行 } } }
注:编者所用IDE为VScode。