今天有人问我一个有趣的问题:“如果javascript不允许与运营商进行分工,我将如何使用javascript执行除法运算。”我写了一个函数,它使用被除数和除数作为变量,然后使用除数变量作为增量迭代被除数:
function divide(dividend,divisor){
for(var i = 1; i <= dividend; i=i+divisor){
console.log(i);
}
}
divide(10,2);
请注意,这是基本的,只适用于正整数。
此功能将打印一系列数字。如果将每个数字转换为对象,则可以将对象的总和存储在变量中,并且该变量将是解决方案。我尝试了许多解决方案,但每个解决方案都产生了无限循环。有谁知道怎么做?
答案 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;
}