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代码格式化和语法着色V2
Oct 14 Javascript
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
Oct 24 Javascript
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
js自定义事件代码说明
Jan 31 Javascript
javascript中有趣的反柯里化深入分析
Dec 05 Javascript
js选项卡的实现方法
Feb 09 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
微信小程序 地图map详解及简单实例
Jan 10 Javascript
vue2.0 axios前后端数据处理实例代码
Jun 30 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
vue 实现微信浮标效果
Sep 01 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 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
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
接收键盘指令的脚本
2006/06/26 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
python中map()函数的使用方法示例
2017/09/29 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
Python turtle库的画笔控制说明
2020/06/28 Python
简单了解如何封装自己的Python包
2020/07/08 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
跳槽求职信范文
2014/05/26 职场文书
植树造林的宣传标语
2014/06/23 职场文书
小学综合实践活动总结
2014/07/07 职场文书
音乐研修感悟
2015/11/18 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python