此函数适用于较小的数组。但是,当给定非常大的“int”数组时,它会惨遭失败。我查找并发现它的堆栈内存不足导致了问题,因为它无法分配足够的空间来容纳所有内部循环的变量。那么如何解决这个问题呢?
void subsetSums(vector<int> arr, int l, int r, int sum=0) {
if(l > r){
cout << sum << ", ";
return;
}
subsetSums(arr, l+1, r, sum+arr[l]);
subsetSums(arr, l+1, r, sum);
}
int main(){
vector<int> arr(500000, 1);
subsetSums(arr, 0, arr.size()-1);
return 0;
}
我现在只想“热修复”这个。然后,也许我会找到这个问题的最佳解决方案。