繁体   English   中英

递归方法中的for循环遇到return语句

[英]for loop encounter return statement in recursion method

public void delete(String key) {
    root = delete(root, key, 0);
}

public Node delete(Node x, String key, int d) {
    if(x == null) 
        return null;
    if(d == key.length())
        x.val = null;
    else {
        char c = key.charAt(d);
        x.next[c] = delete(x.next[c], key, d + 1);
    }

    //----------------
    if(x.val !=null ) 
        return x;
    for (char c = 0;c < R ; c++ ) {
        if(x.next[c] != null)
            return x;
        return null;
    }
}

来自BOOK Algoritm 4,TrieST.java

那是怎么回事? for循环可以多次返回x 返回类型方法可以吗? 如果可以,那么最终的返回值是多少?

一旦调用了“ return”,该功能就会终止。

因此,该函数返回的值为:

  • x如果x.val!= NULL
  • x如果是第一个c (即c = 0),则x.next [c]!= null
  • 否则返回null

正如评论中所说,我猜一定有错字

return null;

应该在for循环之后。 然后该函数将返回:

  • x如果x.val!= NULL
  • X如果存在对x.next一个C 并[c]!= NULL
  • 否则返回null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM