29. Divide Two Integers(js)

29. Divide Two Integers

Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.

Return the quotient after dividing dividend by divisor.

The integer division should truncate toward zero.

Example 1:

Input: dividend = 10, divisor = 3
Output: 3

Example 2:

Input: dividend = 7, divisor = -3
Output: -2
题意:实现两个整数相除的函数,不能使用乘,除,余运算符
代码如下:
/**
 * @param {number} dividend
 * @param {number} divisor
 * @return {number}
 */
const MAX_VALUE=Math.pow(2,31)-1;
const MIN_VALUE=Math.pow(-2,31);
var divide = function(dividend, divisor) {
    var sign=1;
    if((dividend>0 && divisor<0) || (dividend<0 && divisor>0)){
        sign=-1;
    }
    var ldividend=Math.abs(dividend);
    var ldivisor=Math.abs(divisor);
    if(ldivisor==0) return MAX_VALUE;
    if(ldividend==0 || ldividend<ldivisor) return 0

    var lans=ldivide(ldividend,ldivisor);

    var ans;
    if(lans>MAX_VALUE){
        ans=(sign==1)? MAX_VALUE:MIN_VALUE;
    }else{
        ans=sign*lans;
    }

    return ans;
};
var ldivide=function(ldividend,ldivisor){
    if(ldividend<ldivisor) return 0;

    var sum=ldivisor;
    var multiple=1;
    while((sum+sum) <= ldividend){
        sum+=sum;
        multiple+=multiple;
    }
    return multiple+ldivide(ldividend-sum,ldivisor)
};

 

posted @ 2019-02-17 21:54  mingL  阅读(213)  评论(0编辑  收藏  举报