java 递归报错 求大神帮忙

 private List<Post>  getPostLower(List<Post> PostTops){
        List<Post> postAll=new ArrayList<Post>();
        // 上级
        for(Post post:PostTops){
            //查询到下级
             List<Post> posts=basService.queryPostByParentId(post.getPostId());
             //如果有下级   重新调用
             if(posts!=null && posts.size()>0){
                 posts=getPostLower(posts);
                 post.setPosts(posts);
             }
             postAll.add(post);  
        }
        return postAll;

    }

做了个查询树形递归 但是递归次数太多报错了。。。除了修改内存有什么方法避免这个错误吗

贴一下报错的信息吧....

你这等于是深搜,属于暴力枚举式搜索,可以考虑有没有能剪枝的地方,如果没有,你试试别的方法,比如记忆化搜索,或者hash之类的,关键要看你整个代码要的功能是干什么

queryPostByParentId 上下级有首尾相接的吧

递归层次太深会导致堆栈不足,你可以将递归改成循环,方法是定义一个集合,不断将找到的节点展开添加进去,然后继续遍历这个集合添加下一层,这样就不用递归了。

你这样用数据库链接资源当然内存不够了。

可以把要查的数据全部查询出来。放在一个HashMap中,再对这个map做处理。

循环调服务。这个只要层次多一些肯定要爆的