Mic*_*msm 19 javascript algorithm
▶注意:
这不是一个基本的"如何在JavaScript中添加数字"的问题
在downvoting之前请仔细阅读问题
我知道使用+符号进行添加的替代方法是执行以下操作:
int add(int a, int b)
{
if(b == 0)
return sum;
sum = a ^ b;
carry = (a & b) << 1;
return add(sum,carry);
}
Run Code Online (Sandbox Code Playgroud)
但我有两个问题:
^ & <<,但我不知道如何在JavaScript中开始寻找它们,因为我不知道它们叫什么.我试着用JavaScript编写这个...但似乎我想念一些东西
var getSum = function(a, b) {
return (a ^ b, (a & b) << 1)
};
Run Code Online (Sandbox Code Playgroud)
Mic*_*msm 15
我们在资源很少时使用这种方法,在使用这种方法时阅读更多!
var getSum = function(a, b) {
if (b == 0) {
return a;
} else {
return getSum(a ^ b, (a & b) << 1)
}
};Run Code Online (Sandbox Code Playgroud)
@PatrickRoberts建议的ES6单线解决方案
const getSum = (a,b) => b ? getSum(a ^ b, (a & b) << 1) : a;Run Code Online (Sandbox Code Playgroud)
另一解决方案
2-数组技术Array.prototype.fill()
const getSum = (a, b) => {
const firstArr = new Array(a).fill(true);
const secondArr = new Array(b).fill(true);
return firstArr.concat(secondArr).length
}Run Code Online (Sandbox Code Playgroud)
const getSum = (a, b) => eval(''.concat(a).concat(String.fromCharCode(0x2B)).concat(b));Run Code Online (Sandbox Code Playgroud)
好吧,我正在回答标题中明确描述的问题。没有+,没有-操作权..?但是...我想,不是按位运算而是纯数学运算是一个有效的答案。
var x = 1,
y = 2,
sum = Math.log2(2**x * 2**y);
console.log(sum);Run Code Online (Sandbox Code Playgroud)