題目限制:僅能用遞迴,不可使用陣列與指標。解法:遞迴處理高位,遞迴返回時列印低位。
#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;
}
decToHexRec(45036) → 遞迴呼叫 decToHexRec(2814) → decToHexRec(175) → decToHexRec(10)。x=10 < 16,直接列印 'A'。175%16=15 → 'F'、2814%16=9 → '9'、45036%16=4 → '4'。AF94,符合十六進位表示。此法充分展示遞迴「先深入再回溯」的特性,完美符合題目限制。