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

Can I perform multiplication without using the multiplication operator "*" in JavaScript

本文关键字:运算 quot JavaScript 运算符 情况下 我可以      更新时间:2023-09-26

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

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

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

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;
} 

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

您需要能够处理负数和零。以上其他答案在这里没有帮助。有不同的方式。一种相对混乱的方式可能是如果:

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;
  }
}

还有另一种更简单的数学方法。让我们在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:(

以下是的数学技巧

function multiply(num1, num2) {
    return num1/(1/num2);
}
console.log(multiply(5,22))

我认为这可以使用递归来解决。抱歉有不正确的缩进。我们得到了2个数字来相乘,m与n相乘只意味着m,n次相加。

如果n变为0,则返回0。这是我们的基本情况。其他的返回m+多(m,n-1)

我们每次都返回m,因为我们需要将m加n次在每次调用中,我们都会减小n的值,因此当n变为1时,我们将最后一次调用它。

function multi (int m, int n){
   if(n === 0)
   return 0;
   return m + multi(m,n-1);

}

字符串的

repeat()方法可以用来求两个数字的乘积。

var a = 3;
var b = 4;
var res = "1".repeat(a).repeat(b).length;
console.log(res)
log: 12

它正在重复c,a times=>'ccc',然后整个字符串b次=>'cccccccccc’,最后一个字符串的长度将是a*b;

这类似于循环方法。这种方法仅限于正数和整数。

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));

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;
    }
}

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

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