Math常用方法

128 阅读1分钟

一、Math常用方法

  Math.round(2.6)     //四舍五入
  Math.random()       //返回0-1之间的随机数 [0,1)
  Math.max(num1, num2)   //返回较大的数
  Math.min(num1, num2)   //返回较小的数
  Math.abs(num)       //绝对值
  Math.ceil(19.3)     //向上取整  -2.9  -2  2.1  3
  Math.floor(11.8)    //向下取整  -2.9  -3  2.1  2
  Math.pow(x,y)       //x的y次方
  Math.sqrt(num)      //开平方
  Math.PI              //π 常量

二、 使用js实现二分查找

//arr:数组;key:查找的元素;start:开始索引;end:结束索引 
function search(arr,key,start,end){ 
    //首先判断当前起始索引是否大于结束索引,如果大于说明没有找到元素返回-1 
    if(start > end) { 
        return -1; 
    } 
    //如果手动调用不写start和end参数会当做第一次运行默认值 
    //三元表达式:如果不写end参数则为undefined说明第一次调用所以结束索引为arr.length-1
    //如果是递归调用则使用传进来的参数end值 
    var end= end===undefined ? arr.length-1 : end; 
    //如果 || 前面的为真则赋值start,如果为假则赋值后面的0 
    //所以end变量没有写var end = end || arr.length-1;这样如果递归调用时候传参end为0时会被转化为false,导致赋值给arr.length-1造成无限循环溢出; 
    var start=start || 0; 
    //取中间的索引 
    var mid=parseInt((start+end)/2); 
    if(key==arr[mid]){ 
        //如果找到则直接返回 
        return mid; 
    }else if(key<arr[mid]){ 
        //如果key小于则递归调用自身,将结束索引设置为中间索引-1 
        return search(arr,key,start,mid-1); 
    }else{ 
        //如果key大于则递归调用自身,将起始索引设置为中间索引+1 
        return search(arr,key,mid+1,end); 
    } 
} 
var arr = [0,11,23,35,48,56,69,75,87,96]; 
search(arr, 75); //7 
search(arr, 100); //-1