使用递归计算字符串中给定字符的出现次数

新手上路,请多包涵

我必须创建一个名为 countLetterString(char, str) 的函数,我需要在其中使用递归来查找给定字符在字符串中出现的次数。

到目前为止,我的代码看起来像这样。

 def countLetterString(char, str):
    if not str:
        return 0
    else:
        return 1 + countLetterString(char, str[1:])

所有这一切都是计算字符串中有多少个字符,但我似乎无法弄清楚如何拆分字符串然后查看字符是否是字符拆分。

原文由 user123456789101112 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 927
1 个回答

第一步是把这个问题分解成几个部分:

1.如何判断一个字符是否在字符串中?

如果递归执行此操作,则需要检查字符串的 第一个 字符。

2.如何比较两个字符?

Python 有一个 == 运算符来确定两个 事物 是否等价

3. 知道字符串首字符是否匹配后怎么办?

您需要继续处理字符串的其余部分,但要以某种方式维护您目前看到的字符数。这通常使用 for 循环非常容易,因为您只需在其外部声明一个变量,但您必须递归地将程序 状态 传递给每个新函数调用。

这是一个递归计算字符串长度的示例:

 def length(s):
   if not s:  # test if there are no more characters in the string
      return 0
   else:  # maintain a count by adding 1 each time you return
          # get all but the first character using a slice
      return 1 + length( s[1:] )

从这个例子中,看看你是否能完成你的问题。你的将有一个额外的步骤。

4. 什么时候停止递归?

这在处理递归时 总是 一个问题,我什么时候需要停止回忆自己。看看你能不能解决这个问题。

编辑

not s 将测试 s 是否为空,因为在 Python 中空字符串 "" 计算为 False ;和 not False == True

原文由 Hunter McMillen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题