我正在尝试使用 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/