javascript - 使用 Javascript 递归地进行线性搜索

标签 javascript recursion linear-search

我正在尝试使用 Javascript 递归地实现线性搜索。

Given Array A = [1,2,3,4,5,6]

函数签名——像这样:

LinearSearchRecursively(ArrayGiven, x, startingValue) 

如果找到值则返回索引,否则返回 -1,但递归地实现它。

如果您能附加一个正在运行的 jsbin 或 jsfiddle,我们将不胜感激。

最佳答案

您可以使用数组解构来获取数组的头部和尾部。

然后你比较头部,如果它等于你的值,你返回到目前为止的索引,否则,你调用带有尾部的递归函数并且索引递增。

您的停止条件是数组为空时,在这种情况下您返回 -1。

在这里,我用一个没有索引的具有更好 API 的外部函数包装递归函数及其调用。

function linearSearch(arr, value) {
  function linearSearchRec(list, idx) {
    if (!list.length) return -1;
    const [head, ...tail] = list;
    if (value === head) return idx;
    else return linearSearchRec(tail, idx + 1);
  }
  return linearSearchRec(arr, 0);
}

console.log(linearSearch([1,2,3,4,5,6], 1));
console.log(linearSearch([1,2,3,4,5,6], 4));
console.log(linearSearch([1,2,3,4,5,6], 10));

关于javascript - 使用 Javascript 递归地进行线性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54620301/

相关文章:

javascript - 二进制操作参数类型字符串与类型字符串不兼容

c++ - 使用递归获取变量的奇怪值

c - 对C中的for循环感到困惑

c++ - 删除功能无法正常工作

java - 为什么我的条件从来没有满足过?

javascript - node.js 模块和函数中 "this"的含义

javascript - 了解阈值尺度中的 invertExtent

javascript - 如何从 wikipedia api 获取表数据作为行和列?

java - 无法理解此示例中递归的工作原理

java - 在JAVA中创建更多线程来并行化线性搜索会消耗更多时间