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

Python递归函数返回None问题:如何正确返回列表首个元素?

问题解决:递归函数返回None的原因及修复

你的代码问题出在递归调用没有返回结果:当列表长度大于1时,处理完石头后你调用了self.lastStoneWeight(stones),但没有把这个递归调用的返回值传递回去。虽然最底层的递归(列表长度为1时)正确返回了stones[0],但上层函数没有把这个值返回,导致整个函数最终返回默认的None。

修复方法

在递归调用的那一行加上return,让每一层递归都把结果向上传递:

class Solution:
    def lastStoneWeight(self, stones) -> int:
        if len(stones) == 1:
            print(stones[0])
            return stones[0]
        s = max(stones)
        stones.remove(s)
        v = max(stones)
        stones.remove(v)
        l = s - v
        stones.append(l)
        
        # 新增return,传递递归结果
        return self.lastStoneWeight(stones)

stone_list = [2,7,4,1,8,1]  # 避免用list当变量名,会覆盖内置类型
s = Solution()
print(s.lastStoneWeight(stone_list))

额外提示

不要使用list作为变量名,这会覆盖Python的内置list类型,可能导致后续代码出现意想不到的错误,改用stone_list这类更具语义的名字更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:57:04