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

我的递归函数(javascript)总是返回false,即使是true

戚云
2023-03-14

我对递归函数有问题。它总是返回 false,即使它是真的。

我有以下带有名称的数组:

const tableaux = ["Nico","Luc","Paul","Jean","Samy",
"Domi","Cricri","André","Valérie","Mouss","Léon",
"Lionnel","Jacques","Marie","Vanessa","Mohammed","Fatou"];

下面是我的函数:

tableaux.sort(); 

const binarySearch = (array, nameToFind, start, end) => { 
    
    if(start > end) {
        return false;
    }

    let mid = Math.floor((start + end) / 2); 
    
    if(mid === nameToFind) {
        return true;
    }

    if(nameToFind < tableaux[mid]) {
        return binarySearch(array, nameToFind, start, mid - 1); 
    } else {
        return binarySearch(array, nameToFind, mid + 1, end);
    }
}

然后当我使用数组中的名称时,它仍然返回 false :

let test = binarySearch(tableaux, 'Marie', 1, 17);

console.log(test);

共有1个答案

隆长卿
2023-03-14

您正在执行以下操作:

let mid = Math.floor((start + end) / 2); 

if (mid === nameToFind) {
  return true;
}

在这种情况下,您为 mid 分配一个数字(您要查找的索引),然后将其直接与 nameToFind 进行比较。您只需要与索引中间的项目进行比较:

let mid = Math.floor((start + end) / 2); 

if (array[mid] === nameToFind) {
  return true;
}
 类似资料:
  • 问题内容: 我已经写了这段简单的代码: 在我的情况当属。谁能建议/建议出什么问题了? 问题答案: 错误检查和处理是程序员的朋友。检查初始化和执行cURL函数的返回值。并在失败的情况下包含更多信息: *在 手动状态: 成功返回cURL句柄,错误返回 FALSE 。 我观察到该函数在您使用其参数且无法解析域时会返回。如果未使用该参数,则该函数 可能 永远不会返回。但是,请务必始终进行检查,因为该手册并

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

  • 问题内容: 我有一个发出AJAX调用的功能(通过jQuery)。在本节中,我有一个函数说: 但是,如果我这样称呼它: 第一个永远不会被调用。 如果将an 放入函数中,则为true,但在该函数返回之前不会为true 。 可以将回调函数传递给我的方法吗?喜欢: 问题答案: 是一个 回调 函数。它将由Ajax对象调用-异步!-操作完成时。您无法捕捉回调的结果,只有Ajax对象可以做到这一点。 您的函数-

  • 我想检查模型是否已更改isDirty方法,但总是返回false。 这是我的代码:

  • 为什么运行应用程序时返回false? 我使用它来控制日志,如下所示:

  • 问题内容: 我有一些Python代码基本上看起来像这样: 奇怪的是: print(my_list) 打印出正确的内容。但是,第二个打印该函数返回值的打印语句始终打印“无”。即使我用 return(“ abc”) 替换普通的return语句,它仍然是None。 由于该变量的内容似乎在return语句前一行是正确的,所以我不知道从哪里开始调试。是否有可能导致此问题的常见问题? 问题答案: 这是发生了什