软件编程
位置:首页>> 软件编程>> java编程>> 用java实现杨辉三角的示例代码

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

作者:白昼黯淡了星光  发布时间:2023-08-12 09:02:21 

标签:java,杨辉三角

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

什么是杨辉三角

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

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

杨辉三角

杨辉三角的规律即原理

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

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

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

4.第n行数字和为2n-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-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

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

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

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

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

demo代码:


public class Yanghui {
 public static void main(String[] args) {
   // 创建二维数组
   int t[][]=new int[10][];
   // 遍历二维数组的第一层
   for (int i = 0; i < t.length; i++) {
     // 初始化第二层数组的大小
     t[i]=new int[i+1];
     // 遍历第二层数组
     for(int j=0;j<=i;j++){
       // 将两侧的数组元素赋值为1
       if(i==0||j==0||j==i){
         t[i][j]=1;
       }else{
         // 其他数值通过公式计算
         t[i][j]=t[i-1][j]+t[i-1][j-1];
       }
       // 输出数组元素
       System.out.print(t[i][j]+"\t");    
     }
     //换行
     System.out.println();        
   }
 }
}

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

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

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

来源:https://www.jianshu.com/p/6af867ee2f12

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com