Javascript 无运算符的JS递归乘法函数

Javascript 无运算符的JS递归乘法函数,javascript,recursion,Javascript,Recursion,我想创建一个multiply函数,它以两个数字作为参数 并返回这两个数相乘的结果,而不使用运算符*或/或无循环。 当我这样做时,我得到了超过最大调用堆栈大小的错误 function multiply(x,y){ let positif = x + multiply(x, (y-1)) **let negatif = x + multiply(x,(y+1))** this is not working if(x<y) return mult

我想创建一个
multiply
函数,它以两个数字作为参数 并返回这两个数相乘的结果,而不使用运算符*或/或无循环。 当我这样做时,我得到了超过最大调用堆栈大小的错误

    function multiply(x,y){
       let positif = x + multiply(x, (y-1))
       **let negatif = x + multiply(x,(y+1))** this is not working
       if(x<y) return multiply(y,x)
       if((x>0) && (y>=1)){
           return positif
       }if (x>0 || y<= -1){
           return negatif 
    }
   }
函数乘法(x,y){
设positif=x+乘(x,(y-1))
**让negatif=x+乘(x,(y+1))**这不起作用
如果(x0)&(y>=1)){
返回位置
}如果(x>0 | | y,该站点提供了一个很好的例子。您可以通过检查输入是否为负数来扩展此功能,以处理预期结果小于0的数字

function multiply(a, b){
    return ("i").repeat(a).repeat(b).length    
}
对于(正)整数值,可以通过使用位移位添加奇数值来使用

函数乘法(a,b){
如果(!a){返回0;}
返回a&1

?b+乘法(a>>1,b>1,b好的,问题出在哪里?请提供更多信息。到目前为止,听起来我们应该解决你的家庭作业。它是否只适用于(正)整数?对数如何?
 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