题⽬描述
写⼀个函数,求两个整数之和,要求在函数体内不得使⽤ + 、 - 、 * 、 / 四则运算符号。
示例1 输⼊:1,2 返回值:3
思路及解答
位运算迭代法(推荐)
将加法分解为「无进位和」+「进位值」,循环直到进位为0
位运算加法的数学原理:
异或运算 (^):实现无进位加法
0^0=0,0^1=1,1^0=1,1^1=0(进位丢失)
与运算 (&):检测需要进位的位置
- 只有
1&1=1,其他情况都为0
- 只有
左移运算 (<<):将进位值移到正确位置


时间复杂度:O(1) - 最多循环32次(整数位数)
空间复杂度:O(1) - 只使用常数空间
位运算递归法
将迭代过程转为递归调用,基础案例是进位为0
时间复杂度:O(1) - 递归深度最多32层
空间复杂度:O(1) - 但递归栈有深度限制
递归案例: