持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉》一书中出现。具体的样子我给大家看张图。
要想在java中实现杨辉三角,首先要会二维数组和循环的知识。同时要知道杨辉三角的规律,才可把他实现。
规律
规律:第一行有一个元素,第n行有n个元素。每一行的第一个元素和最后一个元素都是1,从第三行开始,对于非第一个非元素和最后一个元素的值,等于上一行同列的数加同列-1的数的结果。
代码实现
public class Yanghuisanjiao {
public static void main(String[] args) {
int[][] yanghui = new int[5][];
for (int j = 0; j < yanghui.length; j++){
yanghui[j] = new int[j+1];
for (int i = 0; i < yanghui[j].length; i++){
if (i == 0 || i == yanghui[j].length-1){
yanghui[j][i] = 1;
}else {
yanghui[j][i] = yanghui[j-1][i-1] + yanghui[j-1][i];
}
}
}
for (int j = 0; j< yanghui.length; j++){
if (j != yanghui.length){
for (int k =yanghui.length-j; k >0 ; k--){
System.out.print(" ");
}
}
for (int i = 0; i < yanghui[j].length; i++){
System.out.print(yanghui[j][i]+" ");
}
System.out.println("");
}
}
}
效果
代码解析
- 首先声明一个二维数组int[][] yanghui = new int[5][];5表示会打印5列
- 通过第一层的for循环yanghui[j] = new int[j+1];明确了每一列有多少元素。
- 通过第二层的for循环int i = 0; i < yanghui[j].length; 把每各元素分别是什么存入数组中。for中有一个条件判断,判断元素的位置是否在每个数组的开头或结尾。如果是的话把1存入其中。如果不是,就按照杨辉三角的规律每个数等于它上方两数之和。yanghui[j][i] = yanghui[j-1][i-1] + yanghui[j-1][i];的到元素存入数组。
- 通过for循环打印空格,使其成为三角形。if用来判断循环的次数,从而控制打印空格的列数。每行的空格数为yanghui.length-j数组的长度减去循环的次数。
- 通过双重for循环打印二维数组。