杨辉三角
杨辉三角
背景知识
一、杨辉三角的介绍
百度百科对于杨辉三角是这样介绍的:
二、杨辉三角的算法思想
(此图片来源于网络)
杨辉三角的两个腰边的数都是 1,从第3行起,除第一个数和最后一个数外,其它位置的数都是上顶上两个数之和。
代码实现
public class YangHuiTriangle1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("输入要打印的行数:");
int n = scanner.nextInt();
// 打印杨辉三角
getTriangle(n);
}
private static int[][] getTriangle(int n) {
// 创建一个二维数组,此二维数组用来存放杨辉三角中每一行的值
int[][] array = new int[n][n];
// 给数组元素赋值
for (int i = 0; i < array.length; i++) {
// 每一行的值
array[i] = new int[i + 1];
// 给首末元素赋值
array[i][0] = array[i][i] = 1;
// 给每行的非首末元素赋值
if (i > 1) {
for (int j = 1; j < array[i].length - 1; j++) {
array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}
}
}
// 遍历二维数组
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
return array;
}
}
总结:
1.总结规律从第三行的第二个元素开始有规律比如:
第二行的2 array[2][1] = array[1][0]+array[1][1];
2.因为规定了是从第三行开始所以不用考虑数组i-1<0
if (i > 1) {
for (int j = 1; j < array[i].length - 1; j++) {
array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}
}
3.第0行是一个元素,定义每行的数据
这个的意思是给每一行的数组定义一个长度,举上面的例子,比如i=0时,说明二维数组的第一行的长度为1,当i=1时,二维数组的第二行为的长度为2。。。。,依次类推
// 每一行的值
array[i] = new int[i + 1];
JAVA中的二维数组的定义及使用