不用加减乘除做假发-递归解法

不用加减乘除做加法

http://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215

计算两个数的和,本质其实就是求解 无进位和进位 的两部分的和。
而高赞对于无进位和进位已经提供了详细的求解方法,因此这两部分的求解在这里就略去了。在这里我们提供了本题的递归解法,相比循环解法更加简单清晰。
注意:当进位为0时,递归结束,返回无进位和即可。

代码如下:

class Solution {
public:
    int Add(int num1, int num2)
    {
        if(num2==0)
            return num1;
        return Add(num1^num2,(num1&num2)<<1);//在这里第一个参数我们用来计算无进位和,第二个参数用来计算进位
    }
};
全部评论

相关推荐

10-31 22:23
门头沟学院 Java
天然不是卷王:太好了 佬的金九银十结束,等offer吐出来,我的金11银12就要开始了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务