原题链接
信息学奥赛一本通(C++版)在线评测系统T1161
B2143 进制转换 - 洛谷 | 计算机科学教育新生态
分析
本题描述中要求使用递归算法。而事实上,递归算法也是较优解。
例如,当我们将十进制数 2021 2021 2021 转化为十六进制数时,我们首先将它除以底数 16 16 16 ,得到商并记录余数。再将商继续除以 16 16 16,重复刚才步骤直至商为 0 0 0 时,最后将记录到的余数倒序输出。
如果使用数组进行存储数据需要倒序输出余数,但递归使得我们避免了这一点——不断递归使得最后得到的余数最先输出,即既能顺序计算又能倒序输出,而不需要分两部分代码完成。
一个小常识是:在十一进制到十六进制中,对于超过 9 9 9 的数我们依次使用字母A~F代替。因此可以开一个数组,记录下各个数字便于使用。
算法
对十进制正整数