gpt4 book ai didi

java - 突破java中的递归方法

转载 作者:行者123 更新时间:2023-11-29 03:35:52 25 4
gpt4 key购买 nike

如何在我设置“标志”时保存它。例如,当我在街区时

if (hashFunction(value) == hashFunction(node.value))
{

flag = true;
return flag;

}

在 debug flag = true 中,但下一步和指针在

if (hashFunction(value) < hashFunction(node.value))
{
if (node.left != null)
{

findPrivate(value, node.left);------THERE

} else
{
flag = false;
return flag;
}
}

结果,我的方法返回 false。如何解决?对不起我的英语不好。完整代码如下。

    private boolean findPrivate(T value, Node node)
{

if (node == null)
{
flag = false;
return flag;

}
if (hashFunction(value) == hashFunction(node.value))
{

flag = true;
return flag;

}

if (hashFunction(value) > hashFunction(node.value))
{
if (node.rigth != null)
{
findPrivate(value, node.rigth);
} else
{

flag = false;
System.out.println("value= " + value + " " + flag);
return flag;
}
}

if (hashFunction(value) < hashFunction(node.value))
{
if (node.left != null)
{

findPrivate(value, node.left);

} else
{
flag = false;
return flag;
}
}
return flag;
}

最佳答案

问题是当你递归时,你忽略了返回值:

findPrivate(value, node.left);

我没有详细查看,但您可以将每次出现的情况更改为:

return findPrivate(value, node.left);

我还建议完全删除您的 flag 变量 - 无论如何都不清楚它在哪里声明,但看起来可能不应该使用它;相反,直接返回值。例如:

if (node.left != null)
{
return findPrivate(value, node.left);
} else
{
return false;
}

... 然后可以很容易地重构为:

return node.left != null ? findPrivate(value, node.left) : false;

事实上,如果 node 为 null,您已经返回 false,您可以使用:

return findPrivate(value, node.left);

在那种情况下。我怀疑您可以按照这些思路非常简单地重构您的代码...

关于java - 突破java中的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15599850/

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