栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

什么是杨辉三角

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

杨辉三角

杨辉三角的规律即原理

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十八线程序猿

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/142200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号