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 相关文章推荐
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
javascript中substr,substring,slice.splice的区别说明
Nov 25 Javascript
Javascript中匿名函数的多种调用方式总结
Dec 06 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
mac上配置Android环境变量的方法
Jul 08 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
微信小程序实现的3d轮播图效果示例【基于swiper组件】
Dec 11 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
javascript实现文字跑马灯效果
Jun 18 Javascript
Vue实现手机计算器
Aug 17 Javascript
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
菜鸟修复电子管记
2021/03/02 无线电
php利用事务处理转账问题
2015/04/22 PHP
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
小学教师师德承诺书
2014/05/23 职场文书
英语系毕业生求职信
2014/07/13 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
婚前协议书范本
2014/10/27 职场文书
店面出租协议书范本
2014/11/28 职场文书
团员个人年度总结
2015/02/26 职场文书
结婚幸福感言
2015/08/01 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android