1、描述
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
2、关键字
实现加法,不使用+ - * / ,
3、思路
位运算
,二进制相加,原始位的值和异或操作的结果相同,进位的值和“与”操作相同。所以使用递归的方式
4、notes
根据二进制找规律
5、复杂度
时间:O(1)
空间:O(1)
6、code
class Solution {
public:
int add(int a, int b) {
if (b == 0)
return a;
else
// 转换成非进位和 + 进位
return add(a ^ b, (unsigned int)(a & b) << 1);
}
};