用java实现杨辉三角的示例代码

  

之前有学弟问过我一java的道面试题,题目不算难。用java实现杨辉三角。我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下。在写代码之前,我们先理清下面两个问题。

  

<强>什么是杨辉三角

  

杨辉三角,是二项式系数在三角形中的一种几何排列。在我国南宋数学家杨辉1261年所著的《详解九章算法》有提到过。在欧洲叫做帕斯卡三角形,如图。

  

用java实现杨辉三角的示例代码

  

杨辉三角
  

  

<强>杨辉三角的规律即原理

  

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

  

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

  

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

  

4。第n行数字和为2 n - 1。
  

  

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

  

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

  

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

  

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

  2

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

  

10。将各行数字相排列,可得11的n (n为行数)次方:1=11 ^ 0;11=11 ^ 1;121=11 ^ 2……当n> 5时会不符合这一条性质,此时应把第n行的最右面的数字“1”放在个位,然后把左面的一个数字的个位对齐到十位……,以此类推,把空位用“0”补齐,然后把所有的数加起来,得到的数正好是11的n - 1次方。以n=11为例,第十一行的数为:1,10日,45120210252210120年,45岁,1,结果为25937424601=1110。

  

清楚了这两点之后,我们的思路就十分的清晰了。实现的方法有很多种,这里我打算用二维数组加双重的循环来实现。

  

演示代码:

        公开课Yanghui {   公共静态void main (String [] args) {//创建二维数组   t int [] []=new int [10] [];//遍历二维数组的第一层   for (int i=0;我& lt;t.length;我+ +){//初始化第二层数组的大小   t[我]=new int (i + 1);//遍历第二层数组   for (int j=0; j<=我;j + +) {//将两侧的数组元素赋值为1   如果(i==0 | | j==0 | | j==我){   t[我][j]=1;   其他}{//其他数值通过公式计算   t[我][j]=[张][j] + t(张)(j - 1);   }//输出数组元素   System.out.print (t[我][j] +“t \”);   }//换行   System.out.println ();   }   }   }   之前      

输出在控制台的结果如下:

  

用java实现杨辉三角的示例代码

  

这里只输出了十行的杨辉三角。优化一下,可以改成动态的获取行数。也可以变成正三角,只需在加一个循环用来计算空格。有兴趣的同学可以尝试一下。- - - - - -来自java十八线程序猿

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
  

用java实现杨辉三角的示例代码