看了剑指offer一书的一个题目,然后自己写了的代码,有迭代和递归两种方式,代码如下:

 1 #include <stdio.h>
 2
 3 int add(int a, int b)    //迭代
 4 {
 5     int c;
 6
 7     c = (a&b)<<1;         //保存进位
 8     a ^= b;              //相加,不考虑进位,类似与半加器原理
 9
10     while(c)             //两数相加直到进位为0
11     {
12             b = c;
13             c = (a&b)<<1;
14             a ^= b;
15     }
16
17     return a;
18 }
19
20 int recursion_add(int a, int b)
21 {
22     int c;
23
24     if (b == 0)
25        return a;
26
27     c = (a&b)<<1;
28     a ^= b;
29
30     return recursion_add(a, c);
31 }
32
33 int main()
34 {
35     int a, b;
36     while(scanf("%d%d", &a, &b) != EOF)
37     {
38                     printf("%d\n", add(a, b));
39                     printf("%d\n", recursion_add(a, b));
40     }
41     return 0;
42 }

转载于:https://www.cnblogs.com/AC-LG/archive/2012/10/12/2722003.html

不用加减乘除完成两数相加相关推荐

  1. 不用加减乘除符号计算两数之和

    1. 转换成二进制进行加法 int bit_add(int a ,int b){int carry = a & b;int no_carry_sum = a ^ b;if (carry != ...

  2. c语言两数相加vs,两数相加(C语言)

    两数相加 给出两个 非空 的链表用来表示两个非负的整数. 其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来 ...

  3. 不用加号实现两整数相加

    1.减法实现 int addWithoutPlusSign(int a, int b) {return a - (-b); } 2.异或实现 对于二进制的加法运算,若不考虑进位,则1+1=0,1+0= ...

  4. Leetcode刷题笔记之445. 两数相加Ⅱ

    原题 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶 ...

  5. leetCode刷题 2. 两数相加

    原题链接: leetcode-cn.com/problems/ad- 题目描述 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你 ...

  6. 【每日一算法】两数相加

    微信改版,加星标不迷路! 每日一算法-两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...

  7. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  8. [Swift]LeetCode2. 两数相加 | Add Two Numbers

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  9. LeetCode 2 两数相加

    给定两个非空链表来代表两个非负数,位数按照逆序方式存储,它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 - ...

最新文章

  1. 关联查询的resultMap写法示例
  2. mediawiki java_使用MediaWiki 1.16.0实现添加媒体向导
  3. [转]Oracle update用例
  4. 要做互联星空的SP接口,一点头绪都没有
  5. 51nod1297 管理二叉树
  6. 开挂程序员 Pat Gelsinger 如何重整英特尔?
  7. 博思得标签打印机驱动_惠普LaserJet 5200n驱动-惠普HP LaserJet 5200n打印机驱动下载 v61.074.561.43官方版...
  8. Java IO流常用操作方法总结
  9. 高校成绩管理数据库系统
  10. ddr3配置 dsp6678_DSP6678DDR配制方法
  11. 运营必备 - PV、UV、IP 分别是什么意思?
  12. 客户关系管理之会员管理
  13. 回扣应该怎么给——某人的经验
  14. Python计算机视觉-仿射扭曲简单实例
  15. 怎么解决电脑USB接口不识别U盘
  16. 获得root权限的命令 su和sudo命令
  17. BUCT数据结构——图(拓扑排序、关键路径)
  18. 学习OpenCV3 面阵相机标定方法
  19. 哪些软装装饰让你认为是家里装修的点睛之笔?
  20. 条码打印软件及条码打印机中如何设置纸张大小

热门文章

  1. Python装饰器学习(九步入门)
  2. 用java实现经纬度坐标度分秒与度批量转换
  3. Python提取数字图片特征向量
  4. Golang 规则引擎原理及实战
  5. Elasticsearch对外提供分词服务实践
  6. 手写call,apply和bind(分析三者的用法与区别)
  7. D - Sequence Swapping DP
  8. Node.js 连接 MySQL 插入 TEXT 类型报错问题
  9. vmware_vcenter_api
  10. 12-openldap使用AD密码