Python中不使用str(),如何用递归实现int转string?求更优算法
递归实现整数转字符串的简洁方案
你的代码确实绕了弯路——用循环找最高位、手动处理补零这些操作把递归的简洁性给丢掉了。其实递归的核心是把大问题拆成更小的子问题,这里可以直接通过取商和取余来拆解数字,实现非常简洁的逻辑:
def int_to_string(n): # 单独处理0的特殊情况 if n == 0: return "0" # 处理负数 if n < 0: return "-" + int_to_string(-n) # 递归终止:个位数直接转字符 if n < 10: return chr(n + ord('0')) # 递归处理高位,再拼接当前最低位的字符 return int_to_string(n // 10) + chr(n % 10 + ord('0'))
这个实现的优势:
- 完全基于递归逻辑,没有额外循环,代码可读性拉满
- 自动覆盖了0和负数的场景(你的原代码输入0会返回空字符串,属于bug)
- 用
ord('0')代替硬编码的48,避免魔法数字,代码更易维护 - 时间复杂度是O(log₁₀n),和你的原代码效率一致,但逻辑简洁太多
举几个测试例子:
print(int_to_string(125)) # 输出 "125" print(int_to_string(0)) # 输出 "0" print(int_to_string(-987)) # 输出 "-987"
内容的提问来源于stack exchange,提问作者DCR
相关产品推荐
相关产品推荐

