想用递归得到一个列表中最长的元素

想问一下用递归得到最长的元素,并输出,自己试了好久还不明白(发现用空列表会从头开始运行)初学python希望大佬帮助!感谢

参考一下:

def maxList(list):
    # 设一个默认值,与列表里的值比大小,谁大留谁,依次递归,最后留下的就是最大值。
    if len(list) >= 3:
        if len(list[0]) <= len(list[1]):
            return maxList(list[1:])
        else:
            num = list[0]
            list = list[2:]
            list.append(num)
            return maxList(list)
    else:
        if len(list) == 2:
            if len(list[0]) <= len(list[1]):
                return list[1]
            else:
                return list[0]
        else:
            print("请输入列表")

print(maxList(['111', '22222','33333333']))

 

不用递归,直接用自带的max

list = ['ale', 'apple', 'plea']
res = max(list, key=len, default='')
print(res)

没必要将事情复杂化

参考一下:

def maxList(list):
    # 设一个默认值,与列表里的值比大小,谁大留谁,依次递归,最后留下的就是最大值。
    if len(list) >= 3:
        if len(list[0]) <= len(list[1]):
            return maxList(list[1:])
        else:
            num = list[0]
            list = list[2:]
            list.append(num)
            return maxList(list)
    else:
        if len(list) == 2:
            if len(list[0]) <= len(list[1]):
                return list[1]
            else:
                return list[0]
        else:
            print("请输入列表")

print(maxList(['111', '22222','33333333']))

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632