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

如何不使用全局变量递归实现字符串字符计数函数appearances

问题修正与实现方案

原有代码存在的问题

  • 引入全局变量d,会导致多次调用函数时统计结果互相污染
  • 当当前字符不在字典中时,直接将d重赋值为仅包含当前字符的新字典,会丢失之前所有统计数据
  • 递归终止条件分支仅打印字典,未按照要求返回字典对象

实现思路

无需使用全局变量,利用字典可变特性递归处理:

  1. 递归终止条件:当low > high时,返回空字典作为初始统计结果
  2. 优先递归获取low+1到high范围的字符统计字典
  3. 将当前low索引对应字符的计数更新到上述子统计字典中
  4. 返回更新后的字典即可

最终代码

def appearances(s, low, high):
    if low > high:
        return {}
    # 递归获取后半段的统计结果
    count_dict = appearances(s, low + 1, high)
    # 更新当前字符的计数
    current_char = s[low]
    count_dict[current_char] = count_dict.get(current_char, 0) + 1
    return count_dict

测试验证

调用appearances("Hello world", 0, 10)即可得到预期结果:
{'e':1, 'o':2, 'H':1, 'l':3, 'r':1, ' ':1, 'd':1,'w':1}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:54:04