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 相关文章推荐
var与Javascript变量隐式声明
Sep 17 Javascript
jQuery实现加入购物车飞入动画效果
Mar 14 Javascript
JavaScript拖动层Div代码
Mar 01 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
JS实现图片点击后出现模态框效果
May 03 Javascript
Vue.js弹出模态框组件开发的示例代码
Jul 26 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
在vue里面设置全局变量或数据的方法
Mar 09 Javascript
vue移动UI框架滑动加载数据的方法
Mar 12 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
JS图片懒加载的优点及实现原理
Jan 10 Javascript
JS实现网页端猜数字小游戏
Mar 06 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
vue中导出Excel表格的实现代码
2018/10/18 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
python中的print()输出
2019/04/12 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
社会实践感言
2014/01/25 职场文书
追悼会子女答谢词
2014/01/28 职场文书
租房协议书范文
2014/08/20 职场文书
团队拓展活动总结
2014/08/27 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
费用申请报告范文
2015/05/15 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB