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

C 語言遞迴演算法:十進位轉十六進位(不使用陣列與指標)

     編輯:C 語言問答

題目限制:僅能用遞迴,不可使用陣列與指標。解法:遞迴處理高位,遞迴返回時列印低位。

完整程式碼

#include <stdio.h>

void printHexDigit(int n)
{
    if (n < 10)
        printf("%c", n + '0');
    else if (n >= 10 && n <= 15)
        printf("%c", n - 10 + 'A');
}

void decToHexRec(int x)
{
    if (x >= 16)
        decToHexRec(x / 16);
    printHexDigit(x % 16);
}

int main()
{
    decToHexRec(45036); // 輸出 AF94
    return 0;
}

原理解析

  1. decToHexRec(45036) → 遞迴呼叫 decToHexRec(2814) → decToHexRec(175) → decToHexRec(10)。
  2. 遞迴最底層 x=10 < 16,直接列印 'A'。
  3. 逐層返回:列印 175%16=15 → 'F'、2814%16=9 → '9'、45036%16=4 → '4'。
  4. 最終輸出 AF94,符合十六進位表示。

此法充分展示遞迴「先深入再回溯」的特性,完美符合題目限制。

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