运行时出现递归错误。和参数不应该改变以递归方式找到子集总和的错误java
n是一个子集,它包含所需的总和(目标)大小: 所以
set[] = {5,6,9,-1,4,2}
n = 3
sum = 10
将等同于真实的,因为大小为3,总结的子集10是{9} -1,2-
public static boolean isSubsetSum(int[] set, int n, int sum) {
int[] copy = new int[set.length - 1];
System.arraycopy(set, 0, copy, 0, set.length - 1);
// Base Cases
if (sum == 0 && n == 0)
return true;
if (set.length == 0) // fixed base case.
return false;
if (set[set.length - 1] > sum) {
return isSubsetSum(copy, n, sum);
}
return isSubsetSum(copy, n, sum) || isSubsetSum(copy, n-1, sum - set[set.length-1]);
}
我已经经历了与子集{-4,0,4},n = 2(或3),总和需要为0 ...任何建议? – user3362954