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 相关文章推荐
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
Aug 16 Javascript
Javascript中实现trim()函数的两种方法
Feb 04 Javascript
JavaScript按值删除数组元素的方法
Apr 24 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
Sep 05 Javascript
JSON与String互转的实现方法(Javascript)
Sep 27 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
解析Vue2.0双向绑定实现原理
Feb 23 Javascript
jQuery实现滚动效果
Nov 17 jQuery
使用webpack3.0配置webpack-dev-server教程
May 29 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 08 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
coreseek 搜索英文的问题详解
2013/06/08 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
小程序实现录音功能
2020/09/22 Javascript
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Python的collections模块真的很好用
2021/03/01 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
优秀的毕业生的自我评价
2013/12/12 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
认识深刻的检讨书
2014/02/16 职场文书
项目建议书格式
2014/03/12 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
十佳党员事迹材料
2014/08/28 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
python实现自动清理文件夹旧文件
2021/05/10 Python
Python Django ORM连表正反操作技巧
2021/06/13 Python
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python