public Node search(int x)
{
if(this.isLeafNode()) {
return this;
}
else {
int i = 0;
while(i < keys.size()) {
if(keys.get(i) == x)
return this;
if(keys.get(i) > x)
return children.get(i).search(x);
i++;
}
return children.get(i).search(x);
}
}
我想知道如果不是
会有所作为return children.get(i).search(x);
我刚刚做了
children.get(i).search(x);
java如何以不同方式处理这些语句?我应该放弃所有递归调用的返回吗?
答案 0 :(得分:0)
要回答您的问题,是的,如果您从return
代码行中删除return children.get(i).search(x);
语句,则会产生巨大影响。
方法签名:
public Node search(int x)
明确声明它将返回一个节点值,因此该方法的最终结果必须返回一个Node或null值。
&#34; java如何以不同方式处理这些语句?&#34;
方法调用:children.get(i).search(x);
仅运行方法并继续。这仅在方法具有void返回类型时有效。由于您的方法返回一个值(在本例中为Node),您必须对值执行某些操作。
调用返回值的方法就像在某种意义上使用变量一样。
您不能只拥有一行代码:variableX;
你需要用它做点什么。在您的情况下,由于您的方法返回Node类型,因此在调用方法时,您必须对返回的值执行某些操作。
为了使这个算法有效,你需要从被调用的方法中获取值,并将其返回给调用方法。
使用视觉示例:
Search1&gt; Search2&gt; Search3
删除返回关键字只会给你错误,因为你会有一行代码变量而不用任何东西。
children.get(i).search(x);
将评估您必须使用的节点。