[英]Subset sum overlapping dilemma recursively
我正在研究递归逻辑,其中一个问题是子集总和。 AFAI读取,递归运行时有重叠。 但是,我无法弄清楚那里是如何存在的。 另外,我读到可以使用 DP 来克服这个问题,但我想了解递归如何克服这个问题。 你能想象一个重叠的例子吗?
伪代码,
def hasSum( array, start, sum):
if sum == 0:
return true
if start > array.length - 1:
return false;
return hasSum(array, start + 1, sum - array[start])
or hasSum(array, start + 1, sum)
我无法将逻辑与下图联系起来,我当然忽略了一点/点。
这里有这条线造成的重叠:
return hasSum(array, start + 1, sum - array[start])
or hasSum(array, start + 1, sum)
如果算法没有找到第一个hasSum
的有效条件(由于递归,在返回到这一点时已经遍历了整个数组),它将再次尝试使用第二个hasSum
忽略 this 的值当前索引。 这意味着该算法多次检查相同的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.