我正在观看 MIT 对 ComScip 的介绍,并且必须进行递归调用。我很难很好地安装在计数器中以计算字符串出现的数量。运气好并玩弄柜台的位置,以下解决方案有效,但我不知道为什么:
import string
target = "banana"
key = "an"
key_len = len(key)
found_pos = 0
found_pos = string.find(target,key)
def countSubStringMatchRecursive (target, key):
counter=0
found_pos = string.find(target,key)
if(found_pos!=-1):
print "found"
slice_pos = found_pos + key_len
counter = countSubStringMatchRecursive (target[slice_pos:], key)
counter+=1
#print counter
return counter
print countSubStringMatchRecursive (target, key)
以下是我的理解:
第一次递归:
初始化计数器=0
如果找到 key 是 target,则 counter=countSubStringMatchRecursive (target[slice_pos:], key) 这应该再次将计数器重置为 0,因为正在运行 main 函数
计数器+=1
返回 1 作为计数器值,因为 0+1=1
我不明白的部分是为什么 counter=0 不将计数器重新初始化为 0。相反,它让自己累积先前的值并产生正确的结果