[英]Return statement does not work!
我在这里有这个简单的方法:
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);
}
}
当我调试它时,代码到达“ return target;”行,并跳过它并转到最后一个return语句-“ return addItem(current.smaller,target);”! 我一生中从未见过像这样的WTF吗?
您可能会看到调试跳回“一种”方法。
您正在调用addItem递归; 所以最终的回报,实际上是它将添加并返回的地方; 会“似乎”跳到另一个返回,只是因为您要从中返回的Method调用起源于此。
如果到达该return语句,则它肯定应该从该方法返回。 如果您不知道(因为它是递归的),请尝试放置一些System.out.println()
语句。
例如:
...
Log.i("BinaryTree", "Added item: " + target.data.getId());
System.out.println("Returning: " + target.toString());
return target;
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.