给出了长度为n的二进制字符串列表,其中一些是码字。你知道吗
在main例程中,如果满足某些条件,我想向码字列表添加一个元素。算法的相关部分可以写为:从一个列表开始,只向这个列表添加一个码字元素(从所有可能的字符串列表中),如果它与第一个码字至少有d距离,那么为了添加下一个码字,我们必须在原始列表中找到第一个这样的字符串,这距离已经添加的两个码字第四个元素也是一样,它到已经找到的码字的距离应该至少是d,依此类推。。。你知道吗
使用递归,我编写了以下代码,以“RuntimeError:maximum recursion depth exceeded while calling a Python object”结束
我做错什么了?(我是python新手)
def helper(n,d,strings,codes,lastIndex):
for i in range(lastIndex,n):
distanceCheckSatisfied = True
for j in range(len(codes)):
if ( not(hammingDistance(codes[j],strings[i]) >= d) or not(distanceCheckSatisfied) ):
distanceCheckSatisfied = False
if (distanceCheckSatisfied):
codes.append(strings[i])
helper(n,d,strings,codes,i)
break;
break;
您的第二个
break
将永远不会到达Pythonbreak
语句,它会立即跳出最内部的for
或while
循环。这意味着您的外部for
循环仍在运行。你知道吗解决这个问题应该可以避免大量的递归调用。你知道吗
关于一个半相关的风格指南主题:
if
语句的条件周围的括号是不必要的,应该避免使用括号,除非您使用括号将条件分布到多行。你知道吗not
是运算符,而不是函数使用not x
,而不是not(x)
。你知道吗相关问题 更多 >
编程相关推荐