杨辉三角简介
杨辉三角(Pascal's Triangle)是一个经典的数学结构,其特点是每一行的数字是其上方两个数字之和。具体来说:
顶部的数字是1。
每一行的开头和结尾的数字也是1。
其他位置的数字是其左上方和右上方数字之和。
例如,前几行的杨辉三角如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
Java实现
下面是使用Java语言实现杨辉三角的代码:
`java
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args) {
// 创建Scanner对象用于接收用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入杨辉三角的行数: ");
int numRows = scanner.nextInt();
scanner.close();
// 调用方法生成并打印杨辉三角
generateYangHuiTriangle(numRows);
}
/**
* 生成并打印杨辉三角
*
* @param rows 要生成的杨辉三角的行数
*/
public static void generateYangHuiTriangle(int rows) {
// 创建一个二维数组来存储杨辉三角的数值
int[][] triangle = new int[rows][rows];
for (int i = 0; i < rows; i++) {
// 每一行的第一个数字设为1
triangle[i][0] = 1;
// 每一行的最后一个数字设为1
triangle[i][i] = 1;
// 填充中间的数字
for (int j = 1; j < i; j++) {
// 当前数字等于上一行的左右两个数字之和
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
// 打印杨辉三角
printTriangle(triangle, rows);
}
/**
* 打印杨辉三角
*
* @param triangle 存储杨辉三角数值的二维数组
* @param rows 杨辉三角的行数
*/
public static void printTriangle(int[][] triangle, int rows) {
// 计算杨辉三角的最大宽度,以便格式化输出
int maxWidth = String.valueOf(triangle[rows - 1][rows / 2]).length() + 2;
for (int i = 0; i < rows; i++) {
// 打印前导空格,使杨辉三角居中
for (int k = 0; k < rows - i; k++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
// 打印每个数字,并根据最大宽度格式化
System.out.printf("%" + maxWidth + "d", triangle[i][j]);
}
System.out.println(); // 换行
}
}
}
代码讲解
1. 导入必要的类
import java.util.Scanner;
2. 主方法 (main)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入杨辉三角的行数: ");
int numRows = scanner.nextInt();
scanner.close();
generateYangHuiTriangle(numRows);
}
创建一个Scanner对象来接收用户输入。
提示用户输入杨辉三角的行数,并读取输入。
调用generateYangHuiTriangle方法生成并打印杨辉三角。
3. 生成杨辉三角 (generateYangHuiTriangle)
public static void generateYangHuiTriangle(int rows) {
int[][] triangle = new int[rows][rows];
for (int i = 0; i < rows; i++) {
triangle[i][0] = 1;
triangle[i][i] = 1;
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
printTriangle(triangle, rows);
}
创建一个二维数组triangle来存储杨辉三角的数值。数组的大小为rows x rows,因为杨辉三角的第i行有i+1个数字。
外层循环遍历每一行:
将每行的第一个和最后一个数字设为1。
内层循环填充中间的数字,计算方法为上一行的左右两个数字之和。
调用printTriangle方法打印生成的杨辉三角。
4. 打印杨辉三角 (printTriangle)
public static void printTriangle(int[][] triangle, int rows) {
int maxWidth = String.valueOf(triangle[rows - 1][rows / 2]).length() + 2;
for (int i = 0; i < rows; i++) {
for (int k = 0; k < rows - i; k++) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.printf("%" + maxWidth + "d", triangle[i][j]);
}
System.out.println();
}
}
计算杨辉三角中数字的最大宽度,以便格式化输出,使其居中对齐。
外层循环遍历每一行:
打印前导空格,使杨辉三角居中。
内层循环打印当前行的数字,使用printf格式化输出。
每打印完一行后换行。
总结
通过上述代码,我们实现了生成和打印杨辉三角的功能。关键步骤包括:
1. 使用二维数组存储杨辉三角的数值。
2. 遍历每一行,填充每个位置的数值。
3. 格式化输出杨辉三角,使其居中对齐。
标签:rows,Java,数字,int,代码,杨辉三角,triangle,Scanner From: https://blog.csdn.net/lxsxjsj/article/details/144478492