请解释以下Pascal的三角代码

时间:2015-04-27 11:49:46

标签: java arrays static-methods pascals-triangle

在为Pascal Triangle提供的代码中,我真的很感激,如果有人可以帮助我清除以下疑问。

1 public class Pascal {
2
3    static void calculatePascal (int[][] t) {
4        for (int i=0; i<t.length; i++) {
5            // the first entry in each row is 1
6            t[i][0] = 1;
7
8            for (int j=1; j<t[i].length-1; j++) {
9      
10                t[i][j] = t[i-1][j-1] + t[i-1][j];
11            }
12            // the last entry in each row is 1
13            t[i][ t[i].length-1 ] = 1;
14        }
15    }
16
17    static void printTriangle (int[][] t) {
18        for (int i=0; i<t.length; i++) {
19            for (int j=0; j<t[i].length; j++) {
20                System.out.print( t[i][j] + " " );
21            }
22            System.out.println();
23        }
24    }
25
26    public static void main (String[] args) {
27        int lines = Integer.parseInt( args[0] );
28        int[][] triangle = new int[lines][];
29        for (int i=0; i<lines; i++) {
30            triangle[i] = new int[ i+1 ];
31       }
32       calculatePascal(triangle);
33        printTriangle(triangle);
34   }
35
36 }
  1. 第30行是什么意思?在第28行,我们制作了一个名为triangle的二维数组。第30行正在做什么?

  2. 在这种情况下如何以三角形形式缩进Pascal三角形?

  3. 为什么我们将 calculatePascal printTriangle 两种方法的返回类型声明为void?

1 个答案:

答案 0 :(得分:1)

  1. 在第28行中,您将创建一维数组,该数组仍保留默认分配的null个值。在第30行中,您将每个null替换为新数组,其大小比索引大一个。
  2. Java中的2D数组实际上不是矩阵。它是数组数组,因此不需要是矩形。在你的情况下:
  3. triangle[0] = [1] triangle[1] = [1, 1] triangle[2] = [1, 2, 1] triangle[3] = [1, 3, 3, 1] ...

    1. 您不需要返回任何内容,因为这里您对作为参考传递的数组执行操作。