杨辉三角 订阅
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。 [1]  杨辉三角是中国数学史上的一个伟大成就。 [1] 展开全文
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。 [1]  杨辉三角是中国数学史上的一个伟大成就。 [1]
信息
别    称
贾宪三角形、帕斯卡三角形
表达式
几何
提出者
杨辉
应用学科
数学,计算机
发现者
杨辉
中文名
杨辉三角
适用领域范围
数学,计算机
外文名
Pascal's Triangle
提出时间
约1050年
使用人群
中学生、大学生,编程专家、等等
杨辉三角简介
杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合 [2]  。
收起全文
精华内容
下载资源
问答
  • 经典算法(5)杨辉三角

    万次阅读 多人点赞 2019-11-04 17:15:35
    杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。

    这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

    用知识改变命运,让我们的家人过上更好的生活

    相关文章

    点此查看 【算法系列】 博客文章


    一、杨辉三角的介绍

    百度百科对于杨辉三角是这样介绍的:
    在这里插入图片描述

    二、杨辉三角的算法思想

    (此图片来源于网络)

    杨辉三角的两个腰边的数都是 1,从第3行起,除第一个数和最后一个数外,其它位置的数都是上顶上两个数之和。

    三、代码实现

    1.第一种写法

    public class YangHuiTriangle1 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("输入要打印的行数:");
            int n = scanner.nextInt();
            // 打印杨辉三角
            getTriangle(n);
        }
    
        /**
         * 打印杨辉三角
         *
         * @param n 要打印的行数
         * @return
         */
        private static int[][] getTriangle(int n) {
            // 创建一个二维数组,此二维数组用来存放杨辉三角中每一行的值
            int[][] array = new int[n][n];
            // 给数组元素赋值
            for (int i = 0; i < array.length; i++) {
                // 每一行的值
                array[i] = new int[i + 1];
                // 给首末元素赋值
                array[i][0] = array[i][i] = 1;
                // 给每行的非首末元素赋值
                if (i > 1) {
                    for (int j = 1; j < array[i].length - 1; j++) {
                        array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
                    }
                }
            }
            // 遍历二维数组
            for (int i = 0; i < array.length; i++) {
                for (int j = 0; j < array[i].length; j++) {
                    System.out.print(array[i][j] + "\t");
                }
                System.out.println();
            }
            return array;
        }
    }
    
    

    代码执行结果:

    输入要打印的行数:10
    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	
    

    2.第二种写法

    public class YangHuiTriangle2 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入要打印的行数:");
            int n = scanner.nextInt();
            // 打印杨辉三角
            int array[][] = getTriangle(n);
            //  打印成等腰三角形
            printTriangle(array);
        }
    
        private static int[][] getTriangle(int n) {
            // 创建一个二维数组,此二维数组用来存放杨辉三角中每一行的值
            int[][] array = new int[n][n];
            // 给数组元素赋值
            for (int i = 0; i < array.length; i++) {
                // 每一行的值
                array[i] = new int[i + 1];
                // 给首末元素赋值
                array[i][0] = array[i][i] = 1;
                // 给每行的非首末元素赋值
                if (i > 1) {
                    for (int j = 1; j < array[i].length - 1; j++) {
                        array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
                    }
                }
            }
            return array;
        }
    
        /**
         * 打印成等腰三角形
         *
         * @param array
         */
        public static void printTriangle(int[][] array) {
            for (int i = 0; i < array.length; i++) {
                // 输出杨辉三角数字前面的空格
                for (int j = 0; j < array.length - 1 - i; j++) {
                    System.out.print("   ");
                }
                for (int j = 0; j <= i; j++) {
                    // 用空格填补空位置
                    System.out.print("   ");
                    // 以十进制整数的形式输出,位宽是3,左对齐
                    System.out.printf("%-3d", array[i][j]);
                }
                System.out.println();
            }
        }
    }
    

    代码执行结果:

    输入要打印的行数:
    10
                                  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  
    

    上一篇 经典算法(4)一文搞懂什么是 快速排序
    下一篇 经典算法(6)斐波拉契数列、兔子繁殖、跳台阶算法


    由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!

    展开全文
  • 杨辉三角

    2012-06-22 10:37:11
    杨辉三角
  • 杨辉三角形

    2020-05-02 12:44:09
    杨辉三角的历史悠久,是我国古代数学家杨辉揭示二项展开式各项的系数的数字三角形。 从键盘输入一个整数n,输出如下所示的n行的杨辉三角形。下图是n为5时的杨辉三角形。 输入要求 输入一个整数n。(1<=n<=15)。...

    题目描述
    杨辉三角的历史悠久,是我国古代数学家杨辉揭示二项展开式各项的系数的数字三角形。

    从键盘输入一个整数n,输出如下所示的n行的杨辉三角形。下图是n为5时的杨辉三角形。

    输入要求
    输入一个整数n。(1<=n<=15)。

    输出要求
    输出n行的杨辉三角形。

    输入样例
    5

    输出样例
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1

    提示
    每一个数据的后面都有空格。

    杨辉三角构造规则:每行首尾是1,其他每个数字等于上一行上方及左上方的两个数字之和。

    #include <stdio.h>
    int main()
    {
    	int n,i,j ,a[100][100];
    	scanf("%d",&n);
    	for(i=0;i<n;++i)
    	{for(j=0;j<i+1;j++)
    			if(j==0||i==j) a[i][j]=1;
    	     else a[i][j]=a[i-1][j]+a[i-1][j-1];}
    	for(i=0;i<n;++i)
    	{for(j=0;j<i+1;j++)
    		printf("%d ",a[i][j]);
    	printf("\n");}
       return 0;
    }
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,134
精华内容 5,653
关键字:

杨辉三角