Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归方法不';行不通_Java_Algorithm_List_Recursion_Linked List - Fatal编程技术网

Java 递归方法不';行不通

Java 递归方法不';行不通,java,algorithm,list,recursion,linked-list,Java,Algorithm,List,Recursion,Linked List,我对填充结构LinkedHashMap的递归方法有问题。我不知道上一次返回中的函数调用是否在正确的位置-我现在已尝试将其放在三个不同的位置: public static LinkedHashMap<String, LinkedHashMap<String, Integer>> GetXMLRegularExpression( Node node, LinkedHashMap<String, LinkedHashMap<String, Integ

我对填充结构
LinkedHashMap
的递归方法有问题。我不知道上一次返回中的函数调用是否在正确的位置-我现在已尝试将其放在三个不同的位置:

public static LinkedHashMap<String, LinkedHashMap<String, Integer>> GetXMLRegularExpression(
        Node node, LinkedHashMap<String, LinkedHashMap<String, Integer>> a) {
    List<Element> children = getChildren(node);
    List<String> childrenString = ConversionString(children);
    List<String> Clear = RemoveDuplicate(children);
    LinkedHashMap<String, Integer> lhm = new LinkedHashMap<String, Integer>();

    // System.out.println(childrenString);
    if (!isLeaf(node)) {
        for (int i = 0; i < Clear.size(); i++) {
            int count = NumberOfAppear(childrenString, Clear.get(i));
            lhm.put(Clear.get(i), count);
        }
        a.put(node.getNodeName(), lhm);
        return a;

    } else {
        lhm.put(node.getNodeName(), 0);
        a.put(node.getNodeName(), lhm);
        return a;
    }

    for (int j = 0; j < children.size(); j++) {
        return GetXMLRegularExpression(children.get(j), a);
    }
}
公共静态LinkedHashMap GetXMLRegularExpression(
节点节点,LinkedHashMap(a){
List children=getChildren(节点);
List childrenString=转换字符串(children);
列表清除=移除副本(子项);
LinkedHashMap lhm=新LinkedHashMap();
//System.out.println(childrenString);
如果(!isLeaf(节点)){
for(int i=0;i
代码看起来有问题。您将“return”语句嵌入到循环中,这很奇怪。是否尝试从此函数返回多个值?在循环的第一次迭代中,将执行“return”语句,从而结束此函数的执行。

这也是正确的,但代码甚至没有到达;“if”和“else”都有一个return语句,因此可以执行for循环之前的其中一个返回。没错!谢谢你指出这一点。读了问题后,我跳到了最后一个返回点。:)
isLeaf(节点)
做什么?我可以想象,但是查看您调用的方法的代码会很有帮助,因为人们可能不熟悉这些方法。