Q15:Java实现打印出杨辉三角图形


前言

 * 杨辉三角的实现
 *         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();
		}
	}
}

在这里插入图片描述


总结

提示:这里对文章进行总结:
重要的是找出杨辉三角的数字规律,和化繁为简,逐步实现

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千鹤万象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值