
杨辉三角(Java)
·
实现思路:我们可以先把杨辉三角想象成一个空的二维数组,然后再给它赋值输出即可。
关键在于如何赋值:仔细观察上图可以得出除了每一行第一个数以及最后一个数(都是1),
中间的数字规律就是:a[ i ][ j ] = a[ i - 1 ][ j - 1 ] + a[ i - 1 ][ j ]
实现代码:
public class Triangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//输入数字控制杨辉三角的层数
int layer = scanner.nextInt();
//利用二维数组的结构实现(容易赋值)
int[][] triangle = new int[layer][layer];
//外层循环控制行的赋值
for (int i = 0; i < triangle.length; i++) {
//当i=0,j按照步长为1往后赋值(每一行数字的个数等于行数,所以循环次数就是i)
for (int j = 0; j <= i; j++) {
//每行第一个数跟最后一个数都是1
if (j == 0 || i == j){
triangle[i][j] = 1;
}else {
//杨辉三角的规律
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
//赋值完就输出
System.out.print(triangle[i][j] + " ");
}
//保证换行
System.out.println();
}
}
}
相信大家更多的是看到以下的杨辉三角:
其实个只是改变了输出格式而已,核心代码还是上面部分的代码。为了更好的理解,我们先实现下面的*输出(先拆开写,再合并)。
*******
******
*****
****
***
**
*
拆开:
for (int i = 0; i < 7; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 0; i < 6; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 0; i < 5; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 0; i < 4; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 0; i < 3; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 0; i < 2; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 0; i < 1; i++) {
System.out.print("*");
}
合并:
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7 - i; j++) {
System.out.print("*");
}
System.out.println();
}
到这里其实我们已经差不多实现等腰的杨辉三角了,我们最后把*换成空格就ok了。
public class Triangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//输入数字控制杨辉三角的层数
int layer = scanner.nextInt();
//利用二维数组的结构实现(容易赋值)
int[][] triangle = new int[layer][layer];
//外层循环控制行的赋值
for (int i = 0; i < triangle.length; i++) {
//当i=0,j按照步长为1往后赋值(每一行数字的个数等于行数,所以循环次数就是i)
for (int j = 0; j <= i; j++) {
//每行第一个数跟最后一个数都是1
if (j == 0 || i == j){
triangle[i][j] = 1;
}else {
//杨辉三角的规律
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
}
for (int i = 0; i < triangle.length; i++){
for (int j = 0; j < triangle.length - i; j++) {
//*替换成" "
System.out.print(" ");
}
//替换的同时输出杨辉三角
for (int k = 0; k <= i; k++) {
System.out.print(triangle[i][k] + " ");
}
//保证换行
System.out.println();
}
}
}
阅读全文
AI总结
更多推荐
相关推荐
查看更多
DeepSeek-V3-0324

DeepSeek最新推出DeepSeek-V3-0324版本,参数量从6710亿增加到6850亿,在数学推理、代码生成能力以及长上下文理解能力方面直线飙升。
javascript

JavaScript 编程指南。
Python

All Algorithms implemented in Python
所有评论(0)