《剑指Offer》刷题之不用加减乘除做加法
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
- 题目:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 - 示例:
输入:1,2
返回值:3
- 代码1:
class Solution {
public:
int Add(int num1, int num2)
{
if (num2 == 0)
return num1;
return Add(num1^num2, (num1 & num2) <<1);
}
};
- 算法说明:
十进制运算不让使用,转为二进制算法;
两个数异或:相当于每一位相加,不考虑进位;
两个数相与,并左移一位:相当于进位;
采用递归,将上述两步的结果(求和的结果和进位结果)相加。