欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java实现杨辉三角形

程序员文章站 2024-02-21 14:36:10
...

一:前言

实现杨辉三角,需要知道什么是杨辉三角。如下图,就是两种杨辉三角。这两种杨辉三角形是目前最常见的:
(1)等边形状的杨辉三角
Java实现杨辉三角形
(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];

三、示例 (创建一个长度为10,宽度为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();
		}
	}
}

Java实现杨辉三角形
第一种方法

public class Triangle1 {
	public static void main(String[] args) {
		//定义了一个长度为10,高度为10的二维数组,数组中的值都为0;
		int[][] arr=new int[10][10];
		for(int i=0;i<arr.length; i++) {
			//由于只是给杨辉三角内的位置赋值,所以是j<=i
			for(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();
		}
	}
}

Java实现杨辉三角形
第二种方法 (这里用这种是输出的一个直角三角形,但是在最后输出的时候加上一段就可以变成等腰三角形了)

public class Triangle2 {
	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 Triangle3 {
 
	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实现杨辉三角形
参考链接地址