我有一个问题,用参数调用这个递归函数: bitVector(30, 2, 0, "");
它在工作一段时间后给我一个错误。代码适用于较小的参数 - bitVector(25, 2, 0, "")
工作正常,应该如此。有没有办法优化我的代码,所以它不会给我关于Java堆空间的错误?
private static String bitVector(int n, int k, int kCount, String vector) {
if(kCount == k) {
for(int i= 0; n-vector.length() == 0; i++) {
vector = vector+"0";
System.out.println(vector);
return vector;
}
}
if(vector.length() == n) {
return vector;
}
return bitVector(n, k, kCount, vektor+"0") + bitVector(n, k, kCount+1, vector+"1");
}
发布于 2018-09-26 10:19:12
检查递归调用的数量,并想象使用的字符串的数量......临时分配的字符串太累积,直到递归返回为止。因此堆已经耗尽。检查您的算法并尝试使用StringBuilder或StringBuffer来修改字符串。基本字符串类型是不可变的。
https://stackoverflow.com/questions/-100002741
复制相似问题