javascript中"/"运算符常见错误


Posted in Javascript onOctober 13, 2010

//二分查找健忘递归版本

function binary_search(arr,target,low,high){ 
if(low<high){ //至少包括两个元素 




var min=(low+high)/2; 
if(target>arr[min]) 
return binary_search(arr,target,min+1,high); 
else 
return binary_search(arr,target,low,min); 
}else if(low==high){ //只剩下一个元素 
if(arr[low]==target) 
return low; 
else return -1; 
}else if(low>high){ //空,当用arr.length-1来计算arr的初始high时才要考虑 
return -1; 
} 
}

var arr=[1,2,3,4,5,6];
alert(binary_search(arr,3,0,arr.length-1));
晚上看数据结构,顺便就用js写了个二分查找算法(代码如上),然后随便写了个数组作为测试数据(如上),按照设想应该是输出查找目标的下标,但是意向不到的事情发生了,只见CPU霎时狂转,约两秒后,浏览器自动终止了脚本的运行,然后就一阵纳闷。

根据经验来看,应该是在脚本运行的过程出现了死循环,自习看了一下算法,没有发现什么问题(干脆直接照着课本上的代码输入总不会错了吧),但是问题依旧。于是就在第一个判断条件里面加了个输出语句,如下:

//二分查找健忘递归版本function binary_search(arr,target,low,high){ 
if(low<high){ //至少包括两个元素



 

var min=(low+high)/2; 



 if(target>arr[min]) 
return binary_search(arr,target,min+1,high); 

else 


return binary_search(arr,target,low,min); 
}else if(low==high){ //只剩下一个元素 

if(arr[low]==target) 


return low; 

 else return -1; 
}else if(low>high){ //空,当用arr.length-1来计算arr的初始high时才要考虑 

return -1; 
} 
}

运行,弹出个对话框,里面数字为2.5~~突然有种恍然大悟同时想要砸电脑的冲动。

出错原因以及总结:

javascript里面的"/"运算符跟C++里面的"/"运算符不一样,后者自动取整,前者若非整除则会得到小数(比如说5/2=2.5)。
解决方案:

(1)var min=parseInt((low+high)/2);
(2)var min=Match.floor((low+high)/2);

Javascript 相关文章推荐
location对象的属性和方法应用(解析URL)
Apr 12 Javascript
使用jquery自定义鼠标样式满足个性需求
Nov 05 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
jquery仿ps颜色拾取功能
Mar 08 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
js获取文件里面的所有文件名(实例)
Oct 17 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
JS实现TITLE悬停长久显示效果完整示例
Feb 11 Javascript
Jquery如何使用animation动画效果改变背景色的代码
Jul 20 jQuery
javascript一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 #Javascript
理解Javascript_05_原型继承原理
Oct 13 #Javascript
JavaScript 打地鼠游戏代码说明
Oct 12 #Javascript
理解Javascript_03_javascript全局观
Oct 11 #Javascript
理解Javascript_02_理解undefined和null
Oct 11 #Javascript
理解Javascript_01_理解内存分配原理分析
Oct 11 #Javascript
javascript getElementsByClassName实现代码
Oct 11 #Javascript
You might like
PHP print类函数使用总结
2010/06/25 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php统计数组元素个数的方法
2015/07/02 PHP
php设计模式之委托模式
2016/02/13 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
js实现仿百度瀑布流的方法
2015/02/05 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
Python列表的切片实例讲解
2019/08/20 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
毕业生找工作推荐信
2013/11/21 职场文书
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
工程招投标邀请书
2014/01/30 职场文书
安全标准化汇报材料
2014/02/03 职场文书
保险公司早会主持词
2014/03/22 职场文书
荒岛余生观后感
2015/06/09 职场文书
课题研究阶段性总结
2015/08/13 职场文书
文明上网主题班会
2015/08/14 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server