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。