不用加减乘除做加法
/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
思路分析
加法运算可以拆成无进位加法和有进位加法。
无进位加法的结果是a ^ b。
有进位加法的结果是(a & b) << 1。
b为0时,可以得出a + b的结果就是a,也是递归退出的条件。
代码
class Solution {public int add(int a, int b) {if (b == 0) {return a;}return add(a ^ b, (a & b) << 1);}}