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

C語言遞迴字串逆序輸出:利用調用棧先進後出特性

     編輯:關於C

遞迴邏輯

函數 reverse_print(s):

  1. 若 *s == '\0' 返回 (基礎情況)。
  2. 遞迴呼叫 reverse_print(s+1) (先處理後續)。
  3. 輸出 *s (回溯時輸出 → 逆序)。

代碼

#include 
#include 

void reverse_print(const char *s) {
    assert(s);
    if (*s == '\0') return;
    reverse_print(s + 1);
    putchar(*s);
}

int main() {
    char str[100];
    printf("輸入字串: ");
    fgets(str, sizeof(str), stdin);
    // 移除 fgets 讀入的 \n
    str[strcspn(str, "\n")] = '\0';
    reverse_print(str);
    putchar('\n');
    return 0;
}

原理圖解

reverse_print("abc")
  -> reverse_print("bc")
       -> reverse_print("c")
            -> reverse_print("") 返回
            -> putchar('c')
       -> putchar('b')
  -> putchar('a')
輸出: cba

注意

  • 棧深度 = 字串長度,超長字串會**棧溢位**。
  • 僅適合教學/短字串,生產用雙指針迭代。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved