C语言蛇阵递归函数,如何在递归函数中保持计数?[蟒蛇]

Mark Byers..

9

递归函数具有O(n ^ 2)性能,因为它在每次找到匹配时复制字符串的剩余内容.这比迭代解O(n)慢,并且不必要地如此.

您可以轻松地将其重写为更快,同时通过将搜索的起始索引作为可选参数传递给函数来简化代码并扩展其功能:

def countSubStringMatchRecursive(target, key, start_index = 0):

index = target.find(key, start_index)

if index >= 0:

return countSubStringMatchRecursive(target, key, index + len(key)) + 1

return 0

target_string = 'an apple and a banana'

key = 'an'

count = countSubStringMatchRecursive(target_string, key)

print "Number of instances of %r in %r is %d" % (key, target_string, count)

输出:

Number of instances of 'an' in 'an apple and a banana' is 4

更新:如果您真的想使用字符串模块的查找功能,只需更改一行即可:

index = find(target, key, start_index)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值