算法:杨辉三角(PascalsTriangle)

算法:杨辉三⾓(PascalsTriangle)
⼀、杨辉三⾓介绍
  杨辉三⾓形,⼜称帕斯卡三⾓形、贾宪三⾓形、海亚姆三⾓形、巴斯卡三⾓形,是⼆项式系数的⼀种写法,形似三⾓形,在中国⾸现于南宋杨辉的《详解九章算法》得名,书中杨辉说明是引⾃贾宪的《释锁算书》,故⼜名贾宪三⾓形。在那之前,还有更早发现这个三⾓的波斯数学家和天⽂学家,但相关的内容没有以图⽂保存下来,所以中国的数学家对此研究有很⼤贡献。
        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
  以上是杨辉三⾓的前 9 ⾏,可以看出来每⼀⾏的所有数字对应着⼆项式 (A+B)n 的展开式系数,这⾥ n 从第 0 ⾏开始。
⼆、杨辉三⾓的⼀些性质与实现
此三⾓形的性质有(注:最顶的 1 处于第 0 ⾏):
由正整数构成,每⼀⾏的数字左右对称;
第(2的幂)⾏都是奇数;
每⼀⾏数字之和都是2的幂;
第N⾏数字个数都是N;
第N⾏的第K个数字为组合数;
除每⾏最左侧与最右侧的数字以外,每个数字等于它的左上⽅与右上⽅两个数字之和(也就是说,第 N⾏第 K 个数字等于第 N-1 ⾏的第 K-1 个数字与第K 个数字的和)。
  因⽽固有恒等式:
  可⽤此性质写出整个杨辉三⾓形。
1/**
2    * 杨辉三⾓与 (a+b)^n ⼆项式系数的展开
3    *
4    * @param n
5    * @param k
6    * @return
7*/
8private static int binomialCoefficient(int n, int k) {
9int res = 1;
10if (k > n - k) {
11            k = n - k;道生液
冯代存
激光标记
12        }
13for (int i = 0; i < k; i++) {
腐蚀监测14            res *= (n - i);
15            res /= (i + 1);
16        }
17return res;
fifox18    }
  打印杨辉三⾓的函数:
1/**
2    * 打印杨辉三⾓
3    *
4    * @param n
5*/
6private static void printPascal(int n) {
7for (int line = 0; line < n; line++) {
8for (int i = 0; i <= line; i++) {
9                System.out.print(binomialCoefficient(line, i) + " ");
10            }
11            System.out.println();
12        }
永磁发电机
13    }
  算法的时间复杂度⼤致为 O(N3),这⾥ N 为所打印杨辉三⾓的⾏数。

本文发布于:2024-09-21 17:36:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/192298.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数字   项式   数学家   性质   算法   中国   系数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议