不用加减乘除完成两数相加
2012-10-12 22:53
225 查看
看了剑指offer一书的一个题目,然后自己写了的代码,有迭代和递归两种方式,代码如下:
#include <stdio.h> int add(int a, int b) //迭代 { int c; c = (a&b)<<1; //保存进位 a ^= b; //相加,不考虑进位,类似与半加器原理 while(c) //两数相加直到没有进位 { b = c; c = (a&b)<<1; a ^= b; } return a; } int recursion_add(int a, int b) { int c; if (b == 0) return a; c = (a&b)<<1; a ^= b; return recursion_add(a, c); } int main() { int a, b; while(scanf("%d%d", &a, &b) != EOF) { printf("%d\n", add(a, b)); printf("%d\n", recursion_add(a, b)); } return 0; }
相关文章推荐
- 不用加减乘除符号计算两数之和
- 两个常见位操作面试题:不用加减乘除运算符计算两数之和及a=b*3
- 【算法】A+B problem 用位运算完成两数相加
- 不用加减乘除运算符计算两数之和
- 两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3
- 【剑指Offer-发散思维能力】不用加减乘除求两数的和
- 不用加减乘除运算符计算两数之和及a=b*3
- 不用加减乘除求两数之和
- 不使用加减乘除实现两数相加
- 两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3
- 不用加减乘除运算符计算两数之和及a=b*3
- 371. Sum of Two Integers, 不用加减乘除运算符计算两数之和
- 两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3
- 两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3
- 两个常见位操作面试题 不用加减乘除运算符计算两数之和及a=b*3
- 不用加减乘除做加法
- 不用比较运算符及循环控制语句,判断int型的a、b两数的大小
- 不用加减乘除做加法
- 不用加减乘除做加法
- 剑指offer:不用加减乘除做加法