You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:12:43