我正在尝试用Java编程Pascal-triangle。这是我的代码:
public class Matrix {
public static void main(String[] args) {
// TODO Auto-generated method stub
int Zeilen = 10;
int Spalten = 10;
int[][] Matrix = new int[Zeilen][Spalten];
for(int k=0;k<Zeilen-1;k++) {
// Gebe jede Zeile aus
for(int n=0;n<Spalten-1;n++) {
// Gib jede Spalte aus
if(n > k) {
// Für die leeren Felder
Matrix[k][n] = 0;
}
else if(n == k) {
// Für die Diagonale
Matrix[k][n] = 1;
}
else if(n == 0) {
// Erste Spalte
Matrix[k][n] = 1;
}
else {
// Für alle normalen Felder
System.out.println("TEST");
Matrix[k+1][n+1] = Matrix[k][n] + Matrix[k][n+1];
}
}
}
int i;
int j;
for(i=0;i<Zeilen;i++) {
for(j=0;j<Zeilen;j++) {
System.out.print(Matrix[i][j]);
}
System.out.println("");
}
}
}
它适用于唯一的例外,即最后一个else()部分中的计算值未保存到Matrix中。为什么这样,解决方案究竟是什么?我在Java方面不是那么好。谢谢你的帮助。
(顺便说一句:最后的else()部分被执行,公式应该是正确的,所以它关于保存到Matrix中。)
答案 0 :(得分:1)
根据定义,您可以通过以下公式获得第n行和第k列的系数:
问题出在这里(k和n切换你如何定义嵌套循环和你看到的公式,但没关系):
Matrix[k+1][n+1] = Matrix[k][n] + Matrix[k][n+1];
应该是:
Matrix[k][n] = Matrix[k-1][n-1] + Matrix[k-1][n];
同样要填充你的所有数组,for循环应该是:
for(int k=0;k<Zeilen;k++) {
// Gebe jede Zeile aus
for(int n=0;n<Spalten;n++) {
输出:
1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0 0 0 0
1 3 3 1 0 0 0 0 0 0
1 4 6 4 1 0 0 0 0 0
1 5 10 10 5 1 0 0 0 0
1 6 15 20 15 6 1 0 0 0
1 7 21 35 35 21 7 1 0 0
1 8 28 56 70 56 28 8 1 0
1 9 36 84 126 126 84 36 9 1