首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言打印楊輝三角:組合數性質與 O(n²) 迭代算法

     編輯:關於C語言

楊輝三角規律

第 i 行(從 1 計)第 j 個數(從 1 計)為組合數 C(i-1, j-1)。相鄰項關係:

C(n, k) = C(n, k-1) * (n - k + 1) / k

即:當前數 = 前一數 × (行號 - 列號) / 列號。

迭代實現

#include <stdio.h>

int main(void) {
    int n;
    printf("請輸入行數: ");
    if (scanf("%d", &n) != 1 || n <= 0) return 1;

    for (int i = 1; i <= n; ++i) {
        long val = 1; // 使用 long 防止中間溢出
        for (int j = 1; j <= i; ++j) {
            printf("%ld ", val);
            val = val * (i - j) / j; // 關鍵遞推公式
        }
        putchar('\n');
    }
    return 0;
}

運行示例

請輸入行數: 5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

複雜度

  • 時間:O(n²) —— 雙層迴圈。
  • 空間:O(1) —— 僅用常數額外變量。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved