我想创建一个以两个数字为参数的location
函数
并返回这两个乘积的结果,而无需使用运算符*或/和无循环。
当我这样做时,出现最大调用堆栈大小超出错误
multiply
答案 0 :(得分:1)
网站https://medium.com/@ctrlalt_diljeet/multiply-without-using-in-javascript-890857bb003c提供了一个很好的例子。您可以通过检查输入是否为负数来处理预期结果小于0的数字来扩展它
function multiply(a, b){
return ("i").repeat(a).repeat(b).length
}
答案 1 :(得分:0)
对于(正)整数值,您可以使用Ancient Egyptian multiplication,方法是通过位移位来添加奇数。
a b sum comment -- -- ---- ----------------- 5 7 7 add b if a is odd 2 14 7 1 28 35 add b if a is odd 0 56 35 result ^----------- exit condition
function multiply(a, b) {
if (!a) { return 0; }
return a & 1
? b + multiply(a >> 1, b << 1)
: multiply(a >> 1, b << 1);
}
console.log(multiply(5, 7));