gpt4 book ai didi

java - 递归中带有 return 语句的循环

转载 作者:行者123 更新时间:2023-12-01 17:53:38 25 4
gpt4 key购买 nike

我写了一个递归函数。这是伪代码:

    public recFunction(Node node) {
for(int i=0; i<node.childCount(); i++){
Node child = node.child(i);
if(child.satisfies condition)
return true;
else
return recFunction (child)
}
return false
}

现在,节点的结构如下:

               a
/ \
b c
/ \ / \
d e f g

这里,条件仅在“f”的情况下为真。但是当函数移动到 d 和 e 并且它们返回 false 时,函数甚至懒得移动到“c”。这背后的原因是什么。我一直对递归函数有点模糊,尤其是当它们包含带有 return 语句的循环时。有人可以解释一下在这种情况下会发生什么吗?

最佳答案

您的 for 循环的编写方式就好像它应该迭代所有节点的子节点一样,但它总是在第一次迭代时返回。

if (child.satisfies condition)
return true;
else
return recFunction (child);

如果您想查看所有子项直到找到匹配项,您可以尝试以下操作:

if (child.satisfies condition)
return true;
else if (recFunction(child))
return true;

或者更简单

if (child.satisfies condition || recFunction(child))
return true;

然后,您的 for 循环就可以继续并查看其他子级,直到找到肯定的结果。

关于java - 递归中带有 return 语句的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47347789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com