剑指offer65
# 剑指offer65
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号
要求a+b首先要弄清楚a^b异或得到其实是a+b每一位上都没有进位相加得到的结果,而a&b得到的结果中为1的那一位表明这一位需要向前一位进位1,因此有a+b=a^b+(a&b)<<1,虽然还是转换成了加法,但是后者可以递归实现,当进位为0时表明此时没有进位,a^b=a+b得到结果。
class Solution { public int add(int a, int b) { if(b==0) return a; return add(a^b,(a&b)<<1); }}1
2
3
4
5
6
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57