首页 > 解决方案 > JS没有运算符的递归乘法函数

问题描述

我想创建一个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 
    }
   }

标签: javascriptrecursion

解决方案


网站https://medium.com/@ctrlalt_diljeet/multiply-without-using-in-javascript-890857bb003c提供了一个很好的例子。您可以通过检查输入是否为负来扩展它以处理预期结果小于 0 的数字

function multiply(a, b){
    return ("i").repeat(a).repeat(b).length    
}

推荐阅读