JAVA实现杨辉三角的三种方式
一、前言
既然是实现杨辉三角,就要知道什么是杨辉三角。如下图,就是两种杨辉三角。
(1)等边形状的杨辉三角
(2)直角形状的杨辉三角
在知道这两种都是杨辉三角之后,我们就来实现利用java语言打印出杨辉三角。
二、杨辉三角的规律
- 第n行有n个数字.
- 每一行的开始和结尾数字都为1.
用二维数组表示就是a[i][0]=1; a[i][j]=1(当i==j时);
- 第n+1行的第i个数字等于第n行的i-1个数字加上第n行的i个数字。
用二维数组表示就是 a[i+1][j]=a[i][j-1]+a[i][j];
三、代码部分
3.1、创建一个长度为10,宽度为10的二维数组,但赋值和输出时只输出杨辉三角那个范围的数
首先,我们得理解定义一个长度和高度都为10的二维数组时,他到底做了什么。
public class Test {public static void main(String[] args) {int [][] arr=new int [10][10];for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {System.out.print(arr[i][j]+"\t");}System.out.println();}}
}
输出图:
数组的图为可以看出,实际是给每个位置上都赋值为0;
而我们要做的是给A部分的位置赋值并且输出,而B部分的位置不用管。
A部分与B部分的区别在于:A部分的横坐标大于等于纵坐标。用数组中的话就是i<=j;知道要赋值的范围,那么for循环的语句就知道了啦,就为
for(int i=0;i<arr.length; i++) {for(int j=0;j<=i;j++) {}
}
第一种该方法完整代码:
public class YHSJ {public static void main(String[] args) {//定义了一个长度为10,高度为10的二维数组,数组中的值都为0;int[][] arr=new int[10][10];for(int i=0;i<arr.length; i++) {//由于只是给杨辉三角内的位置赋值,所以是j<=ifor(int j=0;j<=i;j++) {//根据规律,使用if else 赋值if(j==0||j==i) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}/*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出"\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等*/System.out.print(arr[i][j]+"\t");}System.out.println();}}
}
对应效果图:
3.2、直接创建一个和杨辉三角形状一样的数组再赋值输出
在前面我们使用了一个长10高10的数组,但是最后我们只用了它的A部分,思考一下,为什么我们不直接创建一个和前面那个A部分形状一样的数组呢?
形状如下图:
知道基本的概念之后,我们先创建该数组,首先可以确定的是这里的高度还是为10,也就是横坐标最大还是为10,但是纵坐标就是小于等于该行的横坐标。
int[][] arr=new int[10][];for(int i=0;i<arr.length;i++) {arr[i]=new int[i+1];}
在数组创建好之后,再就是赋值了,之前赋值用的是j<=i,但是此处数组的范围就是杨辉三角的范围,所以可以直接对数组进行内外两层循环。
for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {}
}
而赋值的代码也是一样,不过这种方法就可以赋值完再输出,不用像第一种一样赋值时输出。
第二种方法完整代码:
public class YHSJ_2 {public static void main(String[] args) {int[][] arr=new int[10][];for(int i=0;i<arr.length;i++) {arr[i]=new int[i+1];}for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {if(j==0 || i==j) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j]+arr[i-1][j-1];}}}for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {System.out.print(arr[i][j]+"\t");}System.out.println();}}
}
第二种补充说明:这里用这种是输出的一个直角三角形,但是在最后输出的时候加上一段就可以变成等腰三角形了;(但是由于制表符的问题,还是有一些不规范,觉得不好参考第三种)
public class YHSJ_2 {public static void main(String[] args) {int[][] arr=new int[10][];for(int i=0;i<arr.length;i++) {arr[i]=new int[i+1];}for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {if(j==0 || i==j) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j]+aarr[i-1][j-1];}}}for(int i=0;i<arr.length;i++) {int num=(arr.length-i)/2;for(int k=0;k<=num;k++) {System.out.print("\t");}for(int j=0;j<arr[i].length;j++) {System.out.print(arr[i][j]+"\t");}System.out.println();}}
}
3.3、接下来为大家介绍一种等边三角形输出的简单方法
参考文章链接:http://www.cnblogs.com/JumperMan/p/6759422.html
代码:
public class YHSJ_1 {public static void main(String[] args) {int rows = 10;for (int i = 0; i < rows; i++) {int number = 1;// 打印空格字符串System.out.format("%" + (rows - i) * 2 + "s", "");for (int j = 0; j <= i; j++) {System.out.format("%4d", number);number = number * (i - j) / (j + 1);}System.out.println();}}
}
重点在于那个number=number*(i-j)/(j+1),掌握了杨辉三角的作用。而关于System.out.format是一种类似于C语言中的输出,查看API即可知。
效果图:
JAVA实现杨辉三角的三种方式相关推荐
- 杨辉三角(三种方法)
#杨辉三角的特点: 第n行 11的n-1次方 #第n行的和:2的n-1方 #列和等于拐角处的数字 #斐波那契数列 1.1.2.3.5.8-前两的数的和等于第三个数 1.常规方法 num=int(inp ...
- C语言-杨辉三角的三种解法-简单易懂篇
杨辉三角 1.创建二维数组 2.递归方法 3.利用公式求每一个杨辉三角的元素 这里我们先实现第二张图的这种杨辉三角,在第二张图的基础上加上对数字前面空格的控制就好了,这个不难实现,重点是先把杨辉三角成 ...
- Java实现杨辉三角的打印
Java打印杨辉三角的两种方式 方式1:打印直角三角形 //这里的行数可以修改为根据键盘输入获取 int row = 8;//杨辉三角的行数 int[][] arr = new int[row][ro ...
- java代码杨辉三角_用java实现杨辉三角的示例代码
之前有学弟问过我一道java的面试题,题目不算难.用java实现杨辉三角.我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下.在写代码之前,我们先理清下面两个问题. 什么是杨辉三角 杨辉三角 ...
- php数组写杨辉三角java_用java实现杨辉三角的示例代码
之前有学弟问过我一道java的面试题,题目不算难.用java实现杨辉三角.我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下.在写代码之前,我们先理清下面两个问题. 什么是杨辉三角 杨辉三角 ...
- Python学习之---杨辉三角的五种解法
杨辉三角(也称帕斯卡三角)对与编程初学者来说,肯定不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和. 杨辉三角,是二项式系数在三角形中的一种几何排列, ...
- Java打印杨辉三角
Java打印杨辉三角 打印杨辉三角首先要理清楚思路,找到其中的规律,,然后通过其中的规律用java循环的方法想办法解决掉.我们通过仔细的观察不难发现杨辉三角除每行最左侧和最右侧的数字外,每个数字等于它 ...
- python杨辉三角代码,python实现杨辉三角的几种方法代码实例
方法一:迭代 def triangle_1(x): """ :param x: 需要生成的杨辉三角行数 :return: """ trian ...
- java的如何创建js_[Java教程]JS创建事件的三种方式(实例)
[Java教程]JS创建事件的三种方式(实例) 0 2016-05-11 14:00:16 1.普通的定义方式 οnclick="Sfont=prompt('请在文本框中输入红色','红色' ...
- 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...
最新文章
- 从0到25万人,阿里巴巴是如何面试的?(附模板)
- 解决root用户不能打开Chromium网页浏览器
- 不会被计算机打败的棋类游戏,电脑首次打败人类围棋冠军意味着什么?
- 当我们在谈论 Deep Learning:AutoEncoder 及其相关模型
- SSY and JLBD
- 2020中国男士美妆市场洞察报告
- SEO技巧之网站优化的具体细节
- iOS开发之UIApplication
- 京东发布《未来科技趋势白皮书》,101页详解5大关键技术(附PDF下载)
- epoll文件服务器,使用epoll模型的服务器
- 门诊电子处方软件免费版本2.3
- Codeforces 754D. Fedor and coupons
- 速读原著-TCP/IP(子网寻址)
- mars java创业_Mars-java
- 如何使用计算机上合并计算方法,Excel2019中合并计算的使用方法
- 西门子实数转整数_怎样将实数转换成整数
- linux 使用 tmux 运行后台程序
- java程序设计基础实验_JAVA程序设计基础实验1.doc
- 自强脱贫•助残共享 2019第二十九个全国助残日在深圳举办
- JDK更换IDEA如何修改