对于家庭作业问题,我们被要求定义一个函数来计算二进制字符串中的连续位数,并返回数字。在
例如,对于二进制输入S = ‘1111000000001111000111111111111111’
,函数应该返回n = [4,8,4,3,15]
。在
到目前为止,我已经知道了,但我知道这是不正确的,我不知道从这里到哪里去。任何帮助都将不胜感激!在
def consecutive_length(s):
if s == '':
return 0
if s[0] == 0:
return 0
return 1 + consecutive_length(s[1:])
注意:我们不能使用任何循环。这需要我们用递归来完成。
谢谢你!在
我在这里假设“11”是1的连续序列,所以“111”有2个连续的1。这个解决方案是,如果循环不是问题的话。使用索引查找“11”并继续执行,直到找不到更多。下面的程序显示了连续1的数量。在
结果:
^{pr2}$这里有一个充满希望的python方法(忽略了递归地解决这类问题不是python的事实):
在哪里
idx
是字符串的索引,我们不会在每次递归调用时分配一个新的字符串(s[idx]是O(1)iirc)测试:
^{pr2}$编辑:uselpa有一个更好的方法。在
因为不允许循环:
用
consecutive_length(s, [], s[0], 0)
调用它。在相关问题 更多 >
编程相关推荐