杨辉三角形有啥规律

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杨辉三角形有啥规律相关的知识,希望对你有一定的参考价值。

详细一点 拜托

1、每个数等于它上方两数之和。

2、每行数字左右对称,由1开始逐渐变大。

3、第n行的数字有n项。

4、第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

5、第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。

6、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

7、(a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

8、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

9、将第n行的各数值,分别乘以10的列数m-1次方,然后把这些数值相加的和等于11的n-1次方。

扩展资料:

发现历程:

二项式系数表为在我国被称为贾宪三角或杨辉三角,一般认为是北宋数学家贾宪所首创。它记载于杨辉的《详解九章算法》(1261)之中。在阿拉伯数学家卡西的著作《算术之钥》(1427)中也给出了一个二项式定理系数表,他所用的计算方法与贾宪的完全相同。

在欧洲,德国数学家阿皮安努斯在他1527年出版的算术书的封面上刻有此图。但一般却称之为帕斯卡三角形,因为帕斯卡在1654年也发现了这个结果。无论如何,二项式定理的发现,在我国比在欧洲至少要早300年。  

1665年,牛顿把二项式定理推广到n为分数与负数的情形,给出了展开式。   二项式定理在组合理论、开高次方、高阶等差数列求和,以及差分法中有广泛的应用。

参考资料来源:百度百科——帕斯卡三角形

参考技术A 杨辉三角是一个由数字排列成的三角形数表,一般形式如下:
1 n=0
1 1 n=1
1 2 1 n=2
1 3 3 1 n=3
1 4 6 4 1 n=4
1 5 10 10 5 1 n=5
1 6 15 20 15 6 1 n=6
……
此数列中各行中的数字正好是二项式a+b乘方后,展开始终各项的系数。如:
(a+b)^1=a^1+b^1
(a+b)^2=a^2+2ab+b^2
(a+b)^3=a^3+3a^2b+3ab^2+b^3
……
(a+b)^6=a^6+6a^5b+15a^4b^2+20a^3b^3+15a^2b^4+6ab^5+b^6(注意发现规律)
……

参考资料:http://baike.baidu.com/view/7804.htm

本回答被提问者采纳
参考技术B 1.杨辉三角的第n行就是二项式 展开式的系数列。
2.对称性:杨辉三角中的数字左右对称,对称轴是杨辉三角形底边上的“高”。
3.结构特征:杨辉三角除斜边上1以外的各数,都等于它“肩上”的两数之和。
4.这些数排列的形状像等腰三角形,两腰上的数都是1。
5.从右往左斜着看,从左往右斜着看,和前面的看法一样,这个数列是左右对称的。
6.这行数是第几行,就是第二个数加一。
参考技术C 杨辉三角的三个基本性质主要是二项展开式的二项式系数即组合数的性质,它是研究杨辉三角其他规律的基础。杨辉三角横行的数字规律主要包括横行各数之间的大小关系。组合关系以及不同横行数字之间的联系
与二项式定理的关系:杨辉三角的第n行就是二项式 展开式的系数列。
对称性:杨辉三角中的数字左、右对称,对称轴是杨辉三角形底边上的“高”。
结构特征:杨辉三角除斜边上1以外的各数,都等于它“肩上”的两数之和。
这些数排列的形状像等腰三角形,两腰上的数都是1。
从右往左斜着看,从左往右斜着看,和前面的看法一样,这个数列是左右对称的。
上面两个数之和就是下面的一行的数。
这行数是第几行,就是第二个数加一。

参考资料:http://baike.baidu.com/view/7804.htm

课堂作业之杨辉三角形

杨辉三角形数学模型

    1
   11
  121
 1331

通过java实现打印杨辉三角形

用循环队列来实现杨辉三角形的打印

package PascalTriangle;

import javafoundations.CircularArrayQueue;

import java.util.Scanner;

public class YHTriangleQueue {
    public static void main(String args[]) {
    Scanner scan = new Scanner(System.in);
    System.out.print("请输入杨辉三角的行数:");
    int n = scan.nextInt();
    int i = 0;

    CircularArrayQueue<Integer> queue = new CircularArrayQueue<>();
    //初始值设置为 0,1
    queue.enqueue(0);
    queue.enqueue(1);

    while (i <= n) {
        int x = queue.dequeue();
        int y = queue.first();
        if (x == 0) {
            i++;  //每次 x = 0 时行数加一
            queue.enqueue(0);
        }
        queue.enqueue(x + y);  //上一轮输出值与检测值之和,相当于前一行相邻的两元素之和
        if (x == 0) {
            System.out.println();  //删除 0 相当于换行
            for (int j = 0; j < 2 * (n - i); j++) {  //根据具体变化动态输出空字符串
                System.out.print(" ");
            }
        } else
            System.out.print(x + "   ");  //根据具体变化动态输出空字符串
        }
    }
}

技术分享图片

  • 单步跟踪
    技术分享图片

二维数组打印杨辉三角

public class Yanghui1 {
public static void main(String[] args)
{
   int num = 10;             //设置杨辉三角的行数  
   int[][] yangHui = new int [num][];          //申请二维数组存放杨辉三角数值
   for(int i = 0; i < yangHui.length; i ++)
   yangHui[i] = new int[i + 1];

for(int i = 0; i < yangHui.length; i ++)       //利用杨辉三角的计算公式,初始化数组
  for(int j = 0; j < yangHui[i].length; j ++)
  {
    yangHui[i][0] = yangHui[i][i] = 1;        //每一行第一个数和最后一个数都为1
    if(i > 1 && j > 0 && j < i)
      yangHui[i][j] = yangHui[i - 1][j] + yangHui[i -1][j -1];  //杨辉三角的值等于其上一层两个值之和
  }

for(int i = 0; i < yangHui.length; i ++)    //遍历数组,以输出
    {
  for(int j = 0; j < (num - i - 1) / 2; j ++)
    System.out.print("\\t");
  for(int j = 0; j < yangHui[i].length; j ++)
    System.out.print(yangHui[i][j] + "\\t");

  System.out.println();
    }
  }
}

两个一维数组打印杨辉三角

public class YangHui2    {
  public static void main(String[] args)  
   {
    int num = 20;
    int[] up = new int[num];    //申请UP数组用以存储上一层的数据
    for(int i = 0; i <= num; i ++)
     {      
      int[] a = new int[i];     //申请a数组用以存放本层的运算结果
      for(int j = 0; j < i; j ++)
      {
        if(j == 0 || j == i)           //将本层第一个和最后一个数值赋值为1
          a[j] = up[j] = 1;

        if(i > 2 && j !=0 && j != i )   //当从第三行起,非首尾数字的值等于上方两数只和
          a[j] = up[j - 1] + up[j];
      }

      for(int k = 0; k < i; k ++)      //将本层的运算结果存到up数组中,以供一下次运算使用
        up[k] = a[k];

      for(int k = 0; k < (num - i - 1) / 2; k ++)      //打印本层数字
        System.out.print("\\t");
      for(int k = 0; k < i; k ++)
        System.out.print(a[k] + "\\t");

      System.out.println();
        }
      }
    }

一个一维数组打印杨辉三角

public class YangHui3{
public static void main(String[] args)
  {
    int num = 10;

int yangHui[] = new int[(1 + num) * num / 2];    //申请数组存放杨辉三角的数值
for(int i = 0; i < num; i ++)
{
  for(int j = 0; j < (num - i - 1) / 2; j ++)
    System.out.print("\\t");

  int temp = (1 + i) * i / 2;     //temp表示已经存储的数字个数
  for(int j = 0; j <= i; j ++)
  {
    if(j == 0 || j == i)          //每一层的首尾数值为1
      yangHui[temp + j] = 1;
      
    else        
      yangHui[temp + j] = yangHui[temp + j - i] + yangHui[temp + j - i - 1];//非首尾数值为上面两数之和
      System.out.print(yangHui[temp + j] + "\\t");
  }
}
System.out.println();
  }
}

以上是关于杨辉三角形有啥规律的主要内容,如果未能解决你的问题,请参考以下文章

Python案例:打印杨辉三角形

经典算法-帕斯卡三角形(杨辉三角形)

不使用数组实现打印“杨辉三角形”

常用算法——打印杨辉三角形

常用算法详解——打印杨辉三角形

shell脚本实现杨辉三角形