我目前正在编写一些打印Pascal三角形的代码。我需要为每一行使用一个2D数组,但不知道如何让内部数组具有可变长度,因为它也总是根据它的int行改变,例如:
public int[][] pascalTriangle(int n) {
int[][] array = new int[n + 1][]
}
正如你所看到的,我知道如何让外部数组具有我需要的Pascal三角形的大小,但是我不知道如何获得与当前行相对应的行的可变长度
另外,我将如何打印这个2D阵列?
答案 0 :(得分:0)
基本上你想要发生的是得到每一行的大小。
int z
您现在应该可以使用此示例来打印三角形。
答案 1 :(得分:0)
这是我在StackOverFlow上的第一个答案。我是一名新生,刚学过Java作为我学位的一部分。 为了使每一步都清楚,我将在不同的方法中使用不同的代码。
假设n告诉我们要为三角形打印多少行。
public static int[][] createPascalTriangle(int n){
//We first declare a 2D array, we know the number of rows
int[][] triangle = new int[n][];
//Then we specify each row with different lengths
for(int i = 0; i < n; i++){
triangle[i] = new int[i+1]; //Be careful with i+1 here.
}
//Finally we fill each row with numbers
for(int i = 0; i < n; i++){
for(int j = 0; j <= i; j++){
triangle[i][j] = calculateNumber(i, j);
}
}
return triangle;
}
//This method is used to calculate the number of the specific location
//in pascal triangle. For example, if i=0, j=0, we refer to the first row, first number.
public static int calculateNumber(int i, int j){
if(j==0){
return 1;
}
int numerator = computeFactorial(i);
int denominator = (computeFactorial(j)*computeFactorial(i-j));
int result = numerator/denominator;
return result;
}
//This method is used to calculate Factorial of a given integer.
public static int computeFactorial(int num){
int result = 1;
for(int i = 1; i <= num; i++){
result = result * i;
}
return result;
}
最后,在main方法中,我们首先创建一个pascalTriangle,然后使用for循环将其打印出来:
public static void main(String[] args) {
int[][] pascalTriangle = createPascalTriangle(6);
for(int i = 0; i < pascalTriangle.length; i++){
for(int j = 0; j < pascalTriangle[i].length; j++){
System.out.print(pascalTriangle[i][j] + " ");
}
System.out.println();
}
}
这将产生如下输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1