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 相关文章推荐
Jquery 弹出层插件实现代码
Oct 24 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
JavaScript多图片上传案例
Sep 28 Javascript
jQuery滚动加载图片实现原理
Dec 14 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
Jun 21 Javascript
微信小程序 获取微信OpenId详解及实例代码
Oct 31 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
小程序组件之自定义顶部导航实例
Jun 12 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
js实现图片实时时钟
Jan 15 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 CURL获取cookies模拟登录的方法
2013/11/04 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
PHP7.0版本备注
2015/07/23 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
python实现弹窗祝福效果
2019/04/07 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
如何用python免费看美剧
2020/08/11 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
店长职务说明书
2014/02/04 职场文书
村庄环境整治方案
2014/05/15 职场文书
房产公证委托书范本
2014/09/20 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
2014企业年终工作总结
2014/12/23 职场文书
发布会邀请函
2015/01/31 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书