我可以在不使用JavaScript中的乘法运算符“*”的情况下执行乘法运算

时间:2015-04-01 07:46:36

标签: javascript

我需要在JavaScript中乘以两个数字,但我需要不使用乘法运算符" *"。有可能吗?

function a(b,c){
    return b*c;
} // note:need to do this without the "*" operator

9 个答案:

答案 0 :(得分:3)

是。因为乘法只是多次添加。也有方法的有意义的签名,而不是使用单个字母。

function multiply(num, times){
   // TODO what if times is zero
   // TODO what if times is negative
   var n = num;
   for(var i = 1; i < times; i++)
      num += n; // increments itself
   return num;
} 

答案 1 :(得分:3)

a=(b,c)=>Math.round(b/(1/c))

答案 2 :(得分:2)

您需要能够处理负片和零片。以上其他答案对此没有帮助。有不同的方式。一个相对凌乱的方式可能是ifs:

function multiply(num1, num2) {
  var sum = 0;
  for (var i = 0; i < Math.abs(num2); i++) {
    sum += num1;
  }

  if (num1 < 0 && num2 < 0) {
    return Math.abs(sum);
  } else if (num1 < 0 || num2 < 0 ) {
    return -sum;
  } else {
    return sum;
  }
}

答案 3 :(得分:0)

function multiply(num1, num2) {  
  let num = 0;
  // Check whether one or both nums are negative
  let flag = false;
  if(num1 < 0 && num2 < 0){
    flag = true;
    // Make both positive numbers
    num1 = Math.abs(num1);
    num2 = Math.abs(num2);
  }else if(num1 < 0 || num2 < 0){
    flag = false;
    // Make the negative number positive & keep in num2
    if(num1 < 0){
      temp = num2;
      num2 = Math.abs(num1);
      num1 = temp;
    }else{
      num2 = Math.abs(num2);
    }
  }else{
    flag = true;
  }
  
  let product = 0;
  while(num < num2){
    product += num1;
    num += 1;
  }

  // Condition satisfy only when 1 num is negative
  if(!flag){
    return -product;

  }
  return product;
}

console.log(multiply(-2,-2));

答案 4 :(得分:0)

还有另一种更简单的数学方法。让我们在 C++ 中做到这一点:

double mult(double a, double b) {
    return exp(log(a) + log(b));
}

C++ 中的 log() 函数返回参数中传递的参数的自然对数(以 e 为底的对数)。 (参数可以是任何数字类型)

C++ 中的 exp() 函数返回给定参数的指数(欧拉数)e(或 2.71828)。

当您简化上述语句时,您最终会得到 a * b,但仍然没有 * 符号。

*你需要确保 ab 都是正数,否则你会得到 nan :(

答案 5 :(得分:-1)

这是来自某些编程难题还是面试问题? :)

由于乘法是重复加法,因此您可能需要一个循环,它将其中一个因子添加到另一个因子中的每个计数的结果中。

答案 6 :(得分:-1)

function multiply(a, b) {
  let answer = a
  for(var i = 0; i < b - 1; i++) {
    answer += a
  }
  return answer
}

故障:

  1. multiply(6, 3)-我们的a6b3,然后相乘
  2. answer6 //
  3. 开始迭代
    • answer现在是12i现在是1 //我现在是1
    • answer现在为18i现在为2
    • 内部循环结束,因为i不再小于(b - 1)
  4. 然后我们返回answer的{​​{1}}

答案 7 :(得分:-1)

function multiple(a, b) {
    let sum = 0;
    for (let i = 0; i < Math.abs(b); i++) {
       sum += Math.abs(a);
    }

    if (a < 0 && b < 0) {
        return Math.abs(sum);
    } else if (a < 0 || b < 0 ) {
        return -sum;
    } else {
        return sum;
    }
}

答案 8 :(得分:-2)

 $a=5;
 $b=3;
 for($i=0;$i<$b;$i++){
 $c +=$a; 

  }

 echo $c;

这种简单易用的php方法,我希望它是如此简单易用