Javascript 不使用乘法将两个数相乘

Javascript 不使用乘法将两个数相乘,javascript,data-structures,logic,Javascript,Data Structures,Logic,我有一个测试,我需要编码两个数字相乘而不使用乘法 代码如下: function multiply(num,toNum){ var product = 0; for(var i = 1; i <= toNum; i++){ product += num; } return product; } console.log(multiply(2,5)); 上述守则是否令人满意或有需要改善 可以应用更好的逻辑吗 哎, 我用递归法解决了这个问题 这是代码 functio

我有一个测试,我需要编码两个数字相乘而不使用乘法

代码如下:

function multiply(num,toNum){
  var product = 0;
  for(var i = 1; i <= toNum; i++){
    product += num;
  }

  return product;
}

console.log(multiply(2,5)); 
上述守则是否令人满意或有需要改善

可以应用更好的逻辑吗

哎,

我用递归法解决了这个问题

这是代码

function multiply01(num,toNum){
  var product = num;    
  return (toNum >= 1) ? product + multiply01(product,--toNum) : 0; 
}
紧凑的方式:

function multiply(a, b) {
  return a / (1 / b);
}

console.log(multiply(2, 5)); // 10
紧凑的方式:

function multiply(a, b) {
  return a / (1 / b);
}

console.log(multiply(2, 5)); // 10

请尝试此操作,它还将处理负值


请尝试此操作,它还将处理负值


可以对奇数和位移位使用加法。更广为人知的是

如果a为奇数,则b的值相加。然后将a除以2,并指定整数部分。b是双倍的

例如:

 a    b   sum
---  ---  ---
  5    4    4  add 4
  2    8    4
  1   16   20  add 16
  0   32   20  <- result
函数a,b{ var总和=0; 一会儿{ 如果a&1{ 总和+=b; } a>>=1;
b奇数和位移位可以使用加法。俗称加法

如果a是奇数,则b的值求和。然后将a除以2并指定整数部分。b加倍

例如:

 a    b   sum
---  ---  ---
  5    4    4  add 4
  2    8    4
  1   16   20  add 16
  0   32   20  <- result
函数a,b{ var总和=0; 一会儿{ 如果a&1{ 总和+=b; } a>>=1;
b如果这项工作正常,你可能会更好地将其发布,但一种更好的方法是使用循环的较低数字。我投票将此问题作为非主题结束,因为它是关于代码审查的-我们可以将其移到那里吗?如果这项工作正常,你可能会更好地将其发布,但一种更好的方法是使用下面的数字作为循环我投票结束这个问题,因为它是关于代码审查的-我们可以把它移到那里吗?哈哈大笑,这似乎是有效的:DWrong在b=0上的结果需要一个特殊的情况来处理b为0,但除此之外,这是赢家。我会选择三元。它真的需要一个特殊的ca吗se for b==0?当返回a/1/b时,是否有人能提供参数的精确值;不返回预期结果?@Pimgd与IEEE754中描述的完全相同。提示:如果您在继续此对话之前尝试一下,会怎么样?1/1/0-您认为它会返回什么?另一个提示:它会像预期的那样返回0。哈哈大笑,这似乎是真的rs是有效的:DWrong在b=0上的结果需要一个特殊的情况来处理b为0,但除此之外,这是赢家。我会用一个三元。它真的需要b==0的特殊情况吗?有人能在返回a/1/b时提供参数的精确值吗;不返回预期结果吗?@Pimgd正是IEEE754.a中描述的提示:如果您在继续此对话之前进行尝试,会怎么样?1/1/0-您认为它会返回什么?另一个提示:它将完全按照预期返回0。