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

C++ 遞歸實現十進制轉八進制:字串反轉輸出

     編輯:程式設計綜合問答

遞歸邏輯

十進制 `n` 轉八進制:`n % 8` 為最低位,`n / 8` 遞歸處理高位,最後反序輸出。

程式碼


#include 
#include 
using namespace std;

void toOctal(int n, string &result) {
    if (n == 0) return; // 基準:商為 0 結束
    int rem = n % 8;
    toOctal(n / 8, result); // 先處理高位
    result += char('0' + rem); // 回溯時拼接低位 → 自然正序
}

int main() {
    int x;
    cout << "輸入十進制正整數: ";
    cin >> x;
    if (x == 0) { cout << "0\n"; return 0; }
    string result;
    toOctal(x, result);
    cout << "八進制: " << result << endl;
    return 0;
}

關鍵技巧

  • **遞歸先深入 (處理高位),回溯時拼接 (輸出低位)**,自動完成反序,無需額外反轉字串。
  • 基準情況 `n == 0` 直接返回,不拼接字元。
  • 輸入 0 特殊處理直接輸出 "0"。

迭代版 (參考)


string toOctalIter(int n) {
    if (n == 0) return "0";
    string s;
    while (n) { s = char('0' + n % 8) + s; n /= 8; }
    return s;
}

遞歸版本更能體現「分解問題、合併結果」的遞歸思維。

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