写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
方法一:位运算
class Solution {
public:
int Add(int num1, int num2)
{
/*
if(num2 == 0) return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return Add(sum, carry);
*/
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
while(carry != 0){
int a = sum;
int b = carry;
sum = a ^ b;
carry = (a & b) << 1;
}
return sum;
}
};
方法二:构造方法
class Solution
{
public:
Solution()
{
sum = -~sum;
//sum ++;
}
static void Reset()
{
sum = 0;
}
static int GetSum()
{
return sum;
}
private:
static int sum;
};
int Solution::sum = 0;
int sum_solution(int n,int m)
{
Solution::Reset();
Solution *s = new Solution[n];
Solution *s1 = new Solution[m];
delete []s;
delete[]s1;
return Solution::GetSum();
}