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 相关文章推荐
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 Javascript
Javascript isArray 数组类型检测函数
Oct 08 Javascript
JavaScript格式化数字的函数代码
Nov 30 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
vue+elementUI动态生成面包屑导航教程
Nov 04 Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 Javascript
javascript实现一款好看的秒表计时器
Sep 05 Javascript
原生js+css实现tab切换功能
Sep 17 Javascript
微信小程序实现转盘抽奖
Sep 21 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
PHP自定义函数收代码
2010/08/01 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python函数中定义参数的四种方式
2014/11/30 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
详解python读取和输出到txt
2019/03/29 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
岗位廉政承诺书
2014/03/27 职场文书
教师产假请假条范文
2014/04/10 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
认错检讨书
2014/10/02 职场文书
合理化建议书
2015/02/04 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server