2015-04-27 32 views
-2

在提供的帕斯卡三角代码中,如果能帮助我清除以下疑问,我将非常感激。请解释以下帕斯卡的三角代码

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行中,我们制作了一个称为三角形的二维数组。在第30行中,正在做什么?

  2. 另外如何在这种情况下缩进三角形的帕斯卡三角形?

  3. 为什么我们宣布的这两种方法calculatePascalprintTriangle为void返回类型?

+0

@SashaSalauyou是不是三角形[] []一个二维数组?它包含两件事:行数为行数和列数未申报? – Abi

+0

看到我的回答解释 –

+0

这正是我的困惑,因为在第28行是三角形[] [],在第30行是三角形[]。 – Abi

回答

1
  1. 在管线28创建一维阵列仍保持有默认分配null值。在第30行中,用新数组替换每个null,该数组的大小比索引大1。
  2. Java中的2D数组实际上不是矩阵。它是数组的数组,所以它不需要是矩形。你的情况:

triangle[0] = [1] triangle[1] = [1, 1] triangle[2] = [1, 2, 1] triangle[3] = [1, 3, 3, 1] ...

  • 你不需要任何回报,因为在这里你对数组作为引用传递执行操作。
  • +0

    啊,我现在明白了。谢谢你的例子。 – Abi