ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法:杨辉三角(Pascal's Triangle)

2019-12-24 23:00:32  阅读:256  来源: 互联网

标签:Triangle 数字 int res param Pascal 杨辉三角 三角形


一、杨辉三角介绍

  杨辉三角形,又称帕斯卡三角形、贾宪三角形、海亚姆三角形、巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉《详解九章算法》得名,书中杨辉说明是引自贾宪的《释锁算书》,故又名贾宪三角形。在那之前,还有更早发现这个三角的波斯数学家和天文学家,但相关的内容没有以图文保存下来,所以中国的数学家对此研究有很大贡献。

        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 从第 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      */
 8     private static int binomialCoefficient(int n, int k) {
 9         int res = 1;
10         if (k > n - k) {
11             k = n - k;
12         }
13         for (int i = 0; i < k; i++) {
14             res *= (n - i);
15             res /= (i + 1);
16         }
17         return res;
18     }

  打印杨辉三角的函数:

 1     /**
 2      * 打印杨辉三角
 3      *
 4      * @param n
 5      */
 6     private static void printPascal(int n) {
 7         for (int line = 0; line < n; line++) {
 8             for (int i = 0; i <= line; i++) {
 9                 System.out.print(binomialCoefficient(line, i) + " ");
10             }
11             System.out.println();
12         }
13     }

  算法的时间复杂度大致为 O(N3),这里 N 为所打印杨辉三角的行数。

标签:Triangle,数字,int,res,param,Pascal,杨辉三角,三角形
来源: https://www.cnblogs.com/magic-sea/p/12094089.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有