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



我有一个递归函数的问题。它总是返回false,即使它是true。

我有以下名称的数组:

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);

您正在执行以下操作:

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

在本例中,您为mid指定一个数字(您要查找的索引(,然后直接将其与nameToFind进行比较。您只需要与索引mid中的项目进行比较即可:

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

最新更新