当前位置: 首页 > 知识库问答 >
问题:

当word不存在时返回stackoverflow错误的递归二分搜索

裘臻
2023-03-14
    public boolean wordCheck(String target, int start, int end) {
    target.toLowerCase();
    if (end >= 1) {
        int middle = start + (end - start) / 2;
        int targetside = target.compareTo(words.get(middle));// Finds which side the word is on
        if (targetside == 0) {
            return true;
        } // Word is at the middle (the word exists and has been found)
        else if (targetside > 0) {
            return wordCheck(target, middle + 1, end);
        } // If target word is on the right side of the array, "cuts" the other half off
        else {
            return wordCheck(target, start, middle - 1);
        }
    } // If target word is on the left side of the array, "cuts" the other half off
        return false; // Word is not in the dictionary
}

共有1个答案

柴彬
2023-03-14

尝试:

if (end >= start) {

而不是

if (end >= 1) {

更新:

if (end > start) {
        return wordCheck(target, start, middle - 1);
        return wordCheck(target, start, middle);
 类似资料:
  • 我需要在Freemarker中使用实体列表迭代器迭代大量记录。但是,在使用递归宏时,当它仅达到1000条记录时,就会出现StackOverflow错误。下面是同样的代码片段。

  • null 请记住,我是一个非常早期,初学者,婴儿程序员和DIY课,我正在学习的糟糕的解释东西。所以请简单明了。谢谢你。

  • 我写了一个二分搜索的递归程序,正如你所看到的,我试图在给定的数组中找到目标=21的位置,然后返回位置为2。但是,我的输出是1。当我调试它匹配att arr[start]=target时,它直接跳到findTheNumber(arr,mid+1,end,target)行;然后下一行,然后返回mid..只是想知道为什么我的返回在“返回开始”时中断了 }

  • 我正在编写一个在简单的对等网络中搜索客户端的方法。我编写的方法 searchForResponsibleClient 在此网络中获取一个点,并检查调用 searchForResponsibleClient 方法的客户端是否负责此点。 如果它有责任,它会自己回来。 如果它不负责,它会查看其客户端邻居(保存在对象中),并检查是否有任何邻居负责,如果是这样,它将返回邻居。 这两个场景工作正常。 如果邻居

  • 我目前正在编码一个二叉查找树,目前正在尝试实现一个递归函数来确定二叉树中是否存在一个节点。 这是节点类: 所讨论的函数是Exists函数。这是在BST的根节点上调用的,就像这样:

  • 问题内容: 我有一个像这样的递归函数 我正在使用它 我注意到您好永远不会返回,因为我怀疑我在递归调用上创建了多个promise,但是我不确定如何从中返回。 如何返回每个递归创建的Promise? 编辑: 结果是 问题答案: 递归是一种功能性遗产,因此将其与功能性样式一起使用可产生最佳效果。这意味着编写接受和操作其输入(而不是依赖于外部状态)和返回值(而不是依赖于突变或副作用)的函数。 你的程序,而