如何将帕斯卡三角转换为方阵?附Java代码片段
如何将帕斯卡三角转换为方阵?
我来帮你修改代码实现这个需求~首先咱们得明确:方阵意味着每行每列的长度都相等,帕斯卡三角的第n行有n个元素,剩下的位置我们可以用0来填充(或者根据需求调整对齐方式)。下面是修改后的完整代码和关键说明:
左对齐版方阵(空缺补0)
import java.util.*; public class PascalSquare { public static void main(String[] args) { int row = 7; // 创建row×row的方阵,Java数组默认初始值为0,刚好填补空缺 int[][] pascalSquare = new int[row][row]; // 初始化帕斯卡三角的第一个元素 pascalSquare[0][0] = 1; // 填充帕斯卡三角的核心逻辑 for (int i = 1; i < row; i++) { // 每行的第一个元素固定为1 pascalSquare[i][0] = 1; // 填充中间的元素:当前元素 = 上一行左上角 + 上一行正上方的元素 for (int j = 1; j <= i; j++) { pascalSquare[i][j] = pascalSquare[i-1][j-1] + pascalSquare[i-1][j]; } // 剩余位置保持默认的0,无需额外处理 } // 打印最终的方阵 for (int i = 0; i < row; i++) { for (int j = 0; j < row; j++) { System.out.print(pascalSquare[i][j] + "\t"); } System.out.println(); } } }
关键修改点说明
- 数组结构调整:把原代码的不规则数组(每行长度不同)改成了固定大小的
row×row二维数组,直接满足方阵的要求 - 索引简化:改用Java更常用的0-based索引(从0开始计数),避免原代码中
i+2这类容易混淆的长度计算 - 自动补0:Java中int类型数组的默认值是0,刚好完美填补帕斯卡三角元素以外的空缺位置
- 完善打印逻辑:补全了你原代码中未完成的打印语句,确保能正确输出整个方阵
可选:居中对齐的方阵
如果你希望帕斯卡三角在方阵中间显示(两边补0),可以调整元素的起始位置,修改填充逻辑如下:
// 替换原代码中的填充循环部分 for (int i = 0; i < row; i++) { // 计算当前行的起始列,让三角居中 int startCol = (row - i - 1) / 2; // 起始位置设为1 pascalSquare[i][startCol] = 1; for (int j = 1; j <= i; j++) { pascalSquare[i][startCol + j] = pascalSquare[i-1][startCol + j -1] + pascalSquare[i-1][startCol + j]; } }
这样输出的方阵里,帕斯卡三角会居中显示,视觉效果更接近传统的帕斯卡三角样式~
内容的提问来源于stack exchange,提问作者Anon727
相关产品推荐
相关产品推荐

