2015-04-27 31 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