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

C 語言遞歸反轉輸出:呼叫堆疊執行流程與變數生命週期

     編輯:程式設計綜合問答

程式碼

void reverse() {
    char c;
    scanf("%c", &c);
    if (c != '\n') {
        reverse(); // 遞迴呼叫
        printf("%c", c); // 遞迴展開時輸出
    }
}

執行流程解析

  1. 第一次呼叫 reverse() 後,在棧中建立一個區域變數 c。
  2. 若輸入不是換行字元,則繼續呼叫 reverse(),每次呼叫都在棧中建立新的 c。
  3. 直到輸入換行字元,遞迴停止。
  4. 接著從最後一個呼叫開始展開,依序執行 printf("%c", c),因此輸出順序與輸入順序相反。
  5. 每個 c 是不同的棧變數,生命週期隨函數呼叫結束而結束。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved