用循环执行除法

时间:2014-04-04 03:43:25

标签: javascript

今天有人问我一个有趣的问题:“如果javascript不允许与运营商进行分工,我将如何使用javascript执行除法运算。”我写了一个函数,它使用被除数和除数作为变量,然后使用除数变量作为增量迭代被除数:

function divide(dividend,divisor){
    for(var i = 1; i <= dividend; i=i+divisor){
        console.log(i);
    }
}

divide(10,2);

请注意,这是基本的,只适用于正整数。

此功能将打印一系列数字。如果将每个数字转换为对象,则可以将对象的总和存储在变量中,并且该变量将是解决方案。我尝试了许多解决方案,但每个解决方案都产生了无限循环。有谁知道怎么做?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情:

function divide(dividend,divisor){
    var result = 0;
    while(dividend >= divisor){
        dividend -= divisor;
        result++;
    }

    return result;
}

divide(10,2); // 5

请参阅this question on Math.SE,了解其工作原理。

答案 1 :(得分:1)

我认为这就是你想要做的事。

function divide(dividend,divisor){
    var count = 0;
    for(var i = 1; i <= dividend; i=i+divisor){
        count++;
       //console.log(i);
    }
    console.log(count);
    return count;
}

divide(10,2);

答案 2 :(得分:1)

这是处理负数和0红利或除数的版本。

function divide(dividend,divisor) {
    if (dividend === 0 && divisor === 0)
        return NaN;

    if (dividend === 0)
        return 0;

    if (divisor === 0)
        return dividend > 0 ? Infinity : -Infinity;

    var neg = dividend * divisor < 0;

    dividend = Math.abs(dividend);
    divisor = Math.abs(divisor);

    for (var i = 0; dividend >= divisor; ++i)
        dividend -= divisor;

    return neg ? -i : i;
}