我正在研究一个递归函数,它将返回(而不是打印)字符串中字母字符的数量。我知道通过迭代很容易做到这一点,但我的目标是递归地执行。我编写的函数在第一次被调用时会正确执行,但我无法在下一次执行之前找到重置计数器的方法。以下是我所拥有的:
counter = 0
def recAlphaCount(s):
global counter
if len(s) == 0:
return 0
else:
if s[0].isalpha():
counter += 1
recAlphaCount(s[1:])
return counter
我尝试将counter的值赋给另一个变量并重置计数器,但我无法提取它的值并将其重置。在
有没有一种方法可以不使用全局计数器递归地写这个呢?或者有没有一种方法可以返回计数器并在函数中重置它?在
谢谢
global
变量很少是正确答案!您可以使counter
成为一个默认为零的参数,并稍微进行重构:您可以在参数本身中维护计数,如下所示
这也可以这样解决,而不必显式地维护计数。在
^{pr2}$这可以简化为
相关问题 更多 >
编程相关推荐