javascript - 我的递归函数(javascript)总是返回假,即使它是真的
问题描述
我对递归函数有疑问。它总是返回假,即使它是真的。
我有以下带有名称的数组:
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;
}
推荐阅读
- java - 如何从非主键表的休眠列表中选择数据,其中所有列的where子句数据都相同
- c# - 实体框架核心:ToList() 与 ToListAsync()
- ios - 隐藏本机视图时导航栏动画抖动
- php - 如何运行php脚本
- javascript - 请解释这个 JavaScript 逻辑
- django-leaflet - 如何在 django admin 中添加传单地理搜索控件
- python - 为什么带有 numexpr 的 Pandas.eval() 这么慢?
- sql-server - 发布完整备份后,系统如何知道要从事务日志备份中恢复哪些事务?
- python - 如何使用 BeautifulSoup 发送密钥
- javascript - JSP 和 Javascript 取消按钮不起作用