#L0319. 进制转换
进制转换
当前没有测试数据。
题目背景
在算法竞赛的初期训练中,理解函数调用栈和“递推与回归”的过程是至关重要的一步。本题特别为想要巩固基础的选手准备,请尝试抛弃常见的循环结构,用纯递归的方式来解决这个经典的进制转换问题吧!^_^
题目描述
给定一个十进制非负整数 和一个目标进制 ,请编写一个递归函数,将 转换为 进制数并输出。
注意:当 > 10 时,超出 9 的部分请使用大写英文字母 到 来分别表示数值 10 到 15(即 代表 10, 代表 11,以此类推)。
输入格式
一行,包含两个用空格分隔的整数 和 。 满足 , 。
输出格式
一行,包含一个字符串,表示 转换后的 进制数。
样例
233 8
351
45 16
2D
0 2
0
样例解释
对于样例 1:十进制数 233 转换为 8 进制。递归的核心思想在于先不断整除缩小规模,然后在递归返回时(即回溯阶段)打印余数。过程类似于:先处理 233 / 8 = 29,再处理 29 / 8 = 3,最后处理 3 / 8 = 0(到达递归边界)。在递归层层返回时依次输出余数 3、5、1,从而利用函数调用栈自动实现了逆序输出,得到最终结果 351。
对于样例 2:十进制数 45 转换为 16 进制。第一层递归余数为 13(对应字符为 D),商为 2;下一层商为 0,余数为 2。逆序输出即为 2D。
对于样例 3:特别注意数字为 0 时的边界特判。