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

如何用递归函数统计列表中的负数个数?代码输出异常求调试

递归统计列表负数数量的问题修复

你的代码核心问题是遇到负数时仅返回1,未递归处理剩余元素,而且count变量每次递归都会重新初始化,完全没起到累加作用。比如第一个测试用例中,遇到-1就直接返回1,不会继续统计后面的-5,所以结果只有1。

修正后的代码

def countNegatives(num_list):
    """Takes in a list of numbers and
    returns the number of negative numbers
    that are inside the list."""
    # 基线条件:空列表无负数,返回0
    if len(num_list) == 0:
        return 0
    # 第一个元素是负数时,累加1并递归统计剩余列表
    if num_list[0] < 0:
        return 1 + countNegatives(num_list[1:])
    # 非负数时,直接递归统计剩余列表
    else:
        return countNegatives(num_list[1:])

print(countNegatives([0, 1, -1, 3, -5, 6])) # 输出2
print(countNegatives([-1, -3, 50,-4, -5, 1])) # 输出4

关键逻辑说明

  • 基线条件:当列表为空时,递归终止,返回0(没有负数可统计)。
  • 负数分支:当前元素是负数时,返回1 + 剩余列表的负数数量,实现累加计数。
  • 非负数分支:当前元素非负时,直接返回剩余列表的负数数量,不增加计数。

另外,避免用list作为参数名(它是Python内置类型),这里改为num_list避免命名冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:10:44