首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解决带有递归函数的Java堆空间错误?

如何解决带有递归函数的Java堆空间错误?
EN

Stack Overflow用户
提问于 2018-09-26 01:19:03
回答 1查看 0关注 0票数 0

我有一个问题,用参数调用这个递归函数: bitVector(30, 2, 0, "");它在工作一段时间后给我一个错误。代码适用于较小的参数 - bitVector(25, 2, 0, "")工作正常,应该如此。有没有办法优化我的代码,所以它不会给我关于Java堆空间的错误?

代码语言:javascript
复制
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");
}
EN

回答 1

Stack Overflow用户

发布于 2018-09-26 10:19:12

检查递归调用的数量,并想象使用的字符串的数量......临时分配的字符串太累积,直到递归返回为止。因此堆已经耗尽。检查您的算法并尝试使用StringBuilder或StringBuffer来修改字符串。基本字符串类型是不可变的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档