前言
* 杨辉三角的实现
* 1
* 1 1
* 1 2 1
* 1 3 3 1
* 1 4 6 4 1
提示:杨辉三角从第一行开始向下输出,可以把他当作二维数组来对待
提示:以下是本篇文章正文内容,下面案例可供参考
一、实现代码
示例:代码如下
public class Day05_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//这边是直接定义一个二维数组,5X5的二维数组
int[][] arrYH = new int[5][5];
//外层循环i控制打印的行数
for (int i = 0; i < 5; i++) {
//内层循环z 控制打印的空格
for (int z = 5 - i; z > 0; z--) {
System.out.print(" ");
}
//内层循环j 控制打印的实际数字
for (int j = 0; j <= i; j++) {
//左右两边都是1,所以加上条件控制输出1
if(j == 0 || i == j) {
arrYH[i][j] = 1;
}else {
//否则的话,中间的数字部分就是,上面一行的加上上面一行的前一个
arrYH[i][j] = arrYH[i-1][j] + arrYH[i-1][j-1];
}
System.out.print(arrYH[i][j] + " ");
}
System.out.println();
}
}
}
二、具体分析
1.思路解析
杨辉三角中,他的原理图可以是这样的
* 0 1 0
* 0 1 1 0
* 0 1 2 1 0
* 0 1 3 3 1 0
* 0 1 4 6 4 1 0
而为什么是这样的呢?其实是图中两个数相加变成下一行的那个数
而重要的是,我们可以把他当作二维数组来看待,其中的一个个数字,就对应着一个个的二维数组的值。
例如2 = 1 + 1 => arrYH[2][1] = arrYH[1][1] + arrYH[1][0] ;
于是可以得出一个规律
arrYH[i][j] = arrYH[i-1][j] + arrYH[i-1][j-1];
接下来,就来一个嵌套循环,一个控制行,一个控制列,具体过程如下
2.实现步骤
1.基本结构
上面的如果不理解,那我们把问题拆分分析,先来实现这个图:
*
**
***
****
*****
代码如下(示例):
public class Day05_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//外层循环i —— 行
for (int i = 1; i <= 5; i++) {
//定义一个字符类型的对象ch 赋值 *
char ch = '*';
//内层循环j —— 列
for (int j = 1; j <= i; j++) {
System.out.print(ch);
}
//列输出完毕后作换行
System.out.print("\n");
}
}
}
2.内容替换
有了基本的结构,我们试着把*换成对应的数字
代码如下(示例):
public class day05_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//这边是直接定义一个二维数组,5X5的二维数组
int[][] arrYH = new int[5][5];
//外层循环i控制打印的行数
for (int i = 0; i < 5; i++) {
//内层循环j 控制打印的实际数字
for (int j = 0; j <= i; j++) {
//左右两边都是1,所以加上条件控制输出1
if(j == 0 || i == j) {
arrYH[i][j] = 1;
}else {
//否则的话,中间的数字部分就是,上面一行的加上上面一行的前一个
arrYH[i][j] = arrYH[i-1][j] + arrYH[i-1][j-1];
}
System.out.print(arrYH[i][j] + " ");
}
System.out.println();
}
}
}
3.缩进
基本内容有了,我们可以在输出数字前作输出空格来顶格。
public class day05_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] arrYH = new int[5][5];
for (int i = 0; i < 5; i++) {
//看这里, 内层循环z 控制打印的空格
for (int z = 5 - i; z > 0; z--) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
if(j == 0 || i == j) {
arrYH[i][j] = 1;
}else {
arrYH[i][j] = arrYH[i-1][j] + arrYH[i-1][j-1];
}
System.out.print(arrYH[i][j] + " ");
}
System.out.println();
}
}
}
总结
提示:这里对文章进行总结:
重要的是找出杨辉三角的数字规律,和化繁为简,逐步实现