首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 楊輝三角陣列索引邏輯錯誤:中間為 0 的根因與修正

     編輯:程式設計疑難解答

錯誤現象

輸出的楊輝三角中間數值全為 0,如:
1
1 1
1 0 1
1 0 0 1

根本原因

陣列 int[][] a = new int[n][n] 預設值為 0。計算公式 a[i][j] = a[i-1][j-1] + a[i-1][j] 中,邊界條件判斷順序錯誤**或**輸出語句位置錯誤**,導致未正確賦值 1 即輸出。

修正代碼

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("請輸入行數 n:");
    int n = sc.nextInt();
    
    int[][] a = new int[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) { // 注意:j <= i
            if (j == 0 || j == i) {
                a[i][j] = 1; // 兩邊為 1
            } else {
                a[i][j] = a[i-1][j-1] + a[i-1][j]; // 中間 = 左上 + 正上
            }
            System.out.printf("%4d", a[i][j]); // 在賦值後立即輸出
        }
        System.out.println();
    }
    sc.close();
}

關鍵修正點

  1. 內層迴圈條件:j <= i 而非 j < n,避免計算/輸出無效列。
  2. 邊界判斷優先:先判斷 j==0 || j==i 賦值 1,再進入 else 計算中間值。
  3. 輸出位置:放在賦值後、內層迴圈內,確保輸出的是剛計算好的值。

複雜度

  • 時間:O(n²)
  • 空間:O(n²) (可優化至 O(n) 滾動陣列)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved