運行時出現遞歸錯誤。和參數不應該改變以遞歸方式找到子集總和的錯誤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