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

为什么我编写的Python数字反转函数运行时会产生无限循环?

问题定位

你的代码出现无限循环和输出不符合预期的核心原因有两个:

  • 递归终止条件完全错误:Python中只有布尔值False和x==False的判断结果为真,你把数值转成字符串x后,哪怕x是空字符串"",x==False的返回结果也是False,永远触发不了终止逻辑。函数会一直递归调用order(x[1:]),当x为空之后,x[1:]还是空字符串,递归永远不会停止,形成无限循环。
  • 终止逻辑返回值错误:就算你触发了终止条件返回None,后续执行order(x[1:])+(x[0])时会出现类型错误,None无法和字符串执行拼接操作。
修复方案

把递归终止条件修改为判断字符串是否为空,空字符串直接返回空即可,修正后代码如下:

def order(num):
    x = str(num)
    # 修正终止条件和返回值
    if x == "":
        return ""
    else:
        return order(x[1:]) + x[0]
print(order(12345))

运行后输出结果为54321,符合预期。

逻辑说明

递归执行的拼接逻辑如下:

  • 第一层调用:order("12345") 返回 order("2345") + "1"
  • 第二层调用:order("2345") 返回 order("345") + "2"
  • 第三层调用:order("345") 返回 order("45") + "3"
  • 第四层调用:order("45") 返回 order("5") + "4"
  • 第五层调用:order("5") 返回 order("") + "5"
  • 最底层调用:order("") 返回空字符串""
  • 逐层回代拼接后最终得到字符串"54321"

内容的提问来源于stack exchange,提问作者bob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:36:04