Realize A+B , And Thinking of recursion

来源:互联网 发布:亚历克斯·张伯伦 知乎 编辑:程序博客网 时间:2024/06/15 05:25

问题描述:

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。

思考:不能应用数学运算符,但是实现运算,则使用底层的二进制机器语言的计算,位运算符

则&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。

且进位的方法为(a&b)<<1;


且递归的实现方法为函数,一般为函数的返回值又再次被函数利用,如此递归,直至求出结果,参考二分查找算法


实现方法:

#include <iostream>using namespace std;int aplusb ( int a , int b);int main(){    int a = 5;    int b = 6;    int c = 0;    c = aplusb (a , b);    cout << c;}int aplusb ( int a , int b){    if ( a == 0 )        return b ;    if ( b == 0 )        return a ;    int sum , i ;    i = a ^ b ;    sum = (a & b) << 1 ;    return aplusb (  sum , i);}

原创粉丝点击