[剑指offer] 48. 不用加减乘除做加法

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

思路:
或运算模拟 当前位数加减
与运算模拟 进位
递归,当右加数(进位)为0时,停止递归,直接返回左加数(当前和)。
class Solution
{
  public:
    int Add(int num1, int num2)
    {
        if (num2 == 0)
        {
            return num1;
        }
        int s = num1 ^ num2;
        int c = (num1 & num2) << 1;
        return Add(s, c);
    }
};

 

class Solution
{
public:
    int Add(int num1, int num2)
    {
        if (num2 == 0)
        {
            return num1;
        }
        int s = num1 ^ num2;
        int c = (num1 & num2) << 1;
        return Add(s, c);
    }
};
posted @ 2018-12-25 10:38  Ruohua3kou  阅读(109)  评论(0编辑  收藏  举报