JAVA实现杨辉三角的三种方式

一、前言

既然是实现杨辉三角,就要知道什么是杨辉三角。如下图,就是两种杨辉三角。

(1)等边形状的杨辉三角

 

JAVA实现杨辉三角的三种方式_第1张图片

(2)直角形状的杨辉三角

 

JAVA实现杨辉三角的三种方式_第2张图片

在知道这两种都是杨辉三角之后,我们就来实现利用java语言打印出杨辉三角。

二、杨辉三角的规律

  1. n行有n个数字.
  2. 每一行的开始和结尾数字都为1.

用二维数组表示就是a[i][0]=1;  a[i][j]=1(i==j)

  1. 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

输出图:

JAVA实现杨辉三角的三种方式_第3张图片

数组的图为可以看出,实际是给每个位置上都赋值为0;

JAVA实现杨辉三角的三种方式_第4张图片

而我们要做的是给A部分的位置赋值并且输出,而B部分的位置不用管。

A部分与B部分的区别在于:A部分的横坐标大于等于纵坐标。用数组中的话就是i<=j;知道要赋值的范围,那么for循环的语句就知道了啦,就为

for(int i=0;i

第一种该方法完整代码:

public class YHSJ {
	public static void main(String[] args) {
		//定义了一个长度为10,高度为10的二维数组,数组中的值都为0;
		int[][] arr=new int[10][10];
		for(int i=0;i

对应效果图:

JAVA实现杨辉三角的三种方式_第5张图片

3.2、直接创建一个和杨辉三角形状一样的数组再赋值输出

    在前面我们使用了一个长10高10的数组,但是最后我们只用了它的A部分,思考一下,为什么我们不直接创建一个和前面那个A部分形状一样的数组呢?

   形状如下图:

JAVA实现杨辉三角的三种方式_第6张图片

    知道基本的概念之后,我们先创建该数组,首先可以确定的是这里的高度还是为10,也就是横坐标最大还是为10,但是纵坐标就是小于等于该行的横坐标。

int[][] arr=new int[10][];
		for(int i=0;i

    在数组创建好之后,再就是赋值了,之前赋值用的是j<=i,但是此处数组的范围就是杨辉三角的范围,所以可以直接对数组进行内外两层循环。

for(int i=0;i

    而赋值的代码也是一样,不过这种方法就可以赋值完再输出,不用像第一种一样赋值时输出。

第二种方法完整代码:

public class YHSJ_2 {
	public static void main(String[] args) {
		int[][] arr=new int[10][];
		for(int i=0;i

    第二种补充说明:这里用这种是输出的一个直角三角形,但是在最后输出的时候加上一段就可以变成等腰三角形了;(但是由于制表符的问题,还是有一些不规范,觉得不好参考第三种

public class YHSJ_2 {
	public static void main(String[] args) {
		int[][] arr=new int[10][];
		for(int i=0;i

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实现杨辉三角的三种方式_第7张图片

 

你可能感兴趣的:(Java基础)