递归查找列表中最长字符串 代码错误修复与实现求助
recursiveLongestString 递归函数错误修复方案
原有代码核心错误
- 比较对象错误:递归调用得到的
smaller已经是lst[1:]子列表的最长字符串,不需要比较lst[0]和lst[1],应当比较lst[0]和smaller的长度 - 返回值错误:不需要拼接两个字符串,只需返回长度更长的字符串即可
修正后代码
def recursiveLongestString(lst): if len(lst) == 1: return lst[0] # 递归获取剩余子列表的最长字符串 sub_longest = recursiveLongestString(lst[1:]) # 比较当前第一个元素和子列表最长字符串的长度,返回更长的那个 if len(lst[0]) > len(sub_longest): return lst[0] else: return sub_longest
实现逻辑说明
- 递归终止条件:当列表长度为1时,直接返回唯一元素,它就是当前列表的最长字符串
- 递归递推逻辑:
- 先递归求解去掉第一个元素后,剩余子列表的最长字符串
sub_longest - 比较当前第一个元素和
sub_longest的长度,返回长度更大的字符串
- 先递归求解去掉第一个元素后,剩余子列表的最长字符串
- 符合题目要求:没有使用循环、内置max函数,纯递归实现
测试验证
- 输入
recursiveLongestString(["a", "bb", "ccc"]),返回结果为"ccc",符合预期 - 输入
recursiveLongestString(["hi", "its", "fantastic", "here"]),返回结果为"fantastic",符合预期
内容的提问来源于stack exchange,提问作者owntrouble
相关产品推荐
相关产品推荐

