退货声明不起作用!

saa*_*az1 0 java android

我这里有这个简单的方法:

private Node addItem(Node current, Node target) {
    if (current.data.getId() < target.data.getId()) {
        if (current.larger == null) {
            current.larger = target;
            Log.i("BinaryTree", "Added item: " + target.data.getId());
            return target;
        }
        return addItem(current.larger, target);
    } else {
        if (current.smaller == null) {
            current.smaller = target;
            Log.i("BinaryTree", "Added item: " + target.data.getId());
            return target;
        }
        return addItem(current.smaller, target);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调试它时,代码到达'return target;'行,然后跳过它并转到最后一个return语句 - 'return addItem(current.smaller,target);'!我一生中从未见过像这样的WTF吗?!?!

小智 8

你可能看到你的调试跳转'回'一种方法.

你正在调用addItem递归; 所以最后的回报,它实际上会添加它并返回; 将'似乎'跳转到另一个回归,只是因为方法调用你从那里发起的回归.