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

递归计算字符串长度报错list index out of range,请帮忙修正代码

修正递归计算字符串长度的Python代码

嘿,我来帮你排查这个递归计算字符串长度的问题~

你的代码触发list index out of range错误,核心原因是把C语言的字符串逻辑套到Python里了:Python的字符串(转成列表后)根本没有C风格的'\0'终止符!当递归到最后一步,s[1:]会变成空列表,这时候你还去访问s[0],自然就会索引越界啦。

修正后的代码

def lengthh(s):
    # 终止条件:空列表直接返回0,避免索引访问错误
    if not s:
        return 0
    small_output = lengthh(s[1:])
    return 1 + small_output

strr = "abc"
array = list(strr)
print(lengthh(array))

关键修改点

  • 终止条件替换:把判断s[0]=='\0'改成if not s(判断列表是否为空),这才是Python里判断序列结束的正确方式。
  • 移除冗余全局变量:你提前定义的s=list()和smallOutput=int()都是全局变量,完全没必要,函数内部的变量可以自己声明使用。
  • 符合Python规范:把变量名改成了small_output(下划线分隔的蛇形命名法),同时给print加上括号(Python3里print是函数,必须加括号)。

运行修正后的代码,输入"abc"会输出3,完全符合预期~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:44:39