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

C語言遞歸與迴圈實現數字三角形輸出:經典模式輸出教學

     編輯:C 語言問答

題目需求


1
2 2
3 3 3
...
n n n ... n  (共 n 個 n)

迴圈版 (直觀、高效)


void print_triangle_loop(int n) {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d ", i);
        }
        putchar('\n');
    }
}

遞歸版 (教學展示調用棧)


// 輔助:打印單行
void print_line(int num, int count) {
    if (count == 0) { putchar('\n'); return; }
    printf("%d ", num);
    print_line(num, count - 1);
}

// 主遞歸
void print_triangle_recur(int n, int cur) {
    if (cur > n) return;
    print_line(cur, cur);
    print_triangle_recur(n, cur + 1);
}

// 調用
print_triangle_recur(5, 1);

遞歸版單函數 (尾遞歸優化友好)


void triangle_recur_single(int n, int row, int col) {
    if (row > n) return;
    if (col > row) {
        putchar('\n');
        triangle_recur_single(n, row + 1, 1);
    } else {
        printf("%d ", row);
        triangle_recur_single(n, row, col + 1);
    }
}

輸出格式微調

  • 題目要求「每行數字間空格分隔,行末換行」→ 上方代碼符合。
  • 若要求 **對齊** (如每佔 3 字符):printf("%-3d", i) 或 printf("%3d", i)。

教學重點對比

維度迴圈遞歸
可讀性高 (直觀)中 (需理解調用棧)
記憶體O(1)O(n) 棧深度
效能極快函數調用開銷
適用場景生產代碼教學/樹形結構/分治演算法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved