为什么 return 语句没有执行?
why the return statement is not executing?
我正在尝试在二叉树中实现一个查找方法。
当该方法需要 return 一个值时出现问题,但它似乎不执行该语句,即使在执行的同一分号中有其他行也是如此。
public String find(Node currentNode, String value)
{
if(isEmpty())
{
return null;
}
else
{
if(currentNode.getData().compareToIgnoreCase(value) == 0)
{
System.out.println("current -> "+currentNode.getData()); //showing
return currentNode.getData(); //not executing
}
if(value.compareToIgnoreCase(currentNode.getData()) < 0)
{
find(currentNode.getLeft(), value);
}
else if(value.compareToIgnoreCase(currentNode.getData()) > 0)
{
find(currentNode.getRight(), value);
}
}
return null; //always executing
}
我预计 "a" 但 return 为空。
当你执行行时
find(currentNode.getLeft(), value);
您的语句 return currentNode.getData();
正在执行,但您忽略了递归调用返回的内容。 (类似于 getRight()
语句。)然后 if/else 语句完成并执行底部的 return null
。这就是为什么你总是得到 null
.
Return 无论递归调用如何 returns,以便返回值正确传播回原始调用,例如:
return find(currentNode.getLeft(), value);
您必须使用 return 递归调用的数据,现在您忽略了它。另外你总是 return null
无论如何,这里有一个固定版本的程序:
public String find(TreeNode currentNode, String value) {
if (currentNode == null) {
return null;
}
if(currentNode.getData().compareToIgnoreCase(value) == 0) {
return currentNode.getData(); //not executing
}
if (currentNode.getData().compareToIgnoreCase(value) > 0) {
return find(currentNode.getLeft(), value);
} else {
return find(currentNode.getRight(), value);
}
}
我正在尝试在二叉树中实现一个查找方法。 当该方法需要 return 一个值时出现问题,但它似乎不执行该语句,即使在执行的同一分号中有其他行也是如此。
public String find(Node currentNode, String value)
{
if(isEmpty())
{
return null;
}
else
{
if(currentNode.getData().compareToIgnoreCase(value) == 0)
{
System.out.println("current -> "+currentNode.getData()); //showing
return currentNode.getData(); //not executing
}
if(value.compareToIgnoreCase(currentNode.getData()) < 0)
{
find(currentNode.getLeft(), value);
}
else if(value.compareToIgnoreCase(currentNode.getData()) > 0)
{
find(currentNode.getRight(), value);
}
}
return null; //always executing
}
我预计 "a" 但 return 为空。
当你执行行时
find(currentNode.getLeft(), value);
您的语句 return currentNode.getData();
正在执行,但您忽略了递归调用返回的内容。 (类似于 getRight()
语句。)然后 if/else 语句完成并执行底部的 return null
。这就是为什么你总是得到 null
.
Return 无论递归调用如何 returns,以便返回值正确传播回原始调用,例如:
return find(currentNode.getLeft(), value);
您必须使用 return 递归调用的数据,现在您忽略了它。另外你总是 return null
无论如何,这里有一个固定版本的程序:
public String find(TreeNode currentNode, String value) {
if (currentNode == null) {
return null;
}
if(currentNode.getData().compareToIgnoreCase(value) == 0) {
return currentNode.getData(); //not executing
}
if (currentNode.getData().compareToIgnoreCase(value) > 0) {
return find(currentNode.getLeft(), value);
} else {
return find(currentNode.getRight(), value);
}
}