【已解决】如何用递归实现位运算计算两数之和

本博文源于笔者正在思考的如何用递归进行计算两数之和。读者一般都会想到用while循环进行操作,位运算两数之和的思想就犹如辗转相除法。文章并附加了对这个方法的流程演示

问题来源

想要用递归实现两数之和。

代码实现

cpp 复制代码
#include<stdio.h>
int add(int num1, int num2) {

	if (num2 == 0)
		return num1;
	else {
		return add(num2^num1, (num2&num1)<<1);
	}
}
int main() {
	printf("%d", add(3, 5));
	getchar();
}

实现结果

以3+5为例演示代码

代码进行,add(3,5)传入进去

  • 第一次计算add(6,2)
  • 第二次计算add(4,4)
  • 第三次计算add(0,8)
  • 第四次计算add(8,0)
相关推荐
Star Learning Python3 小时前
30道经典java面试题
java·开发语言
wearegogog1233 小时前
NOMA下行链路用户与信道功率分配优化MATLAB实现
开发语言·matlab
jiayong233 小时前
Word图文混排实战技巧
开发语言·c#·word
hqwest3 小时前
码上通QT实战27--系统设置02-加载用户列表
开发语言·qt·sqlite·qtablewidget
木木木一4 小时前
Rust学习记录--C0 总目录
开发语言·学习·rust
蕨蕨学AI4 小时前
【Wolfram语言】46 音频与视频
开发语言·wolfram
sycmancia4 小时前
C语言学习02—位运算
c语言
Microsoft Word4 小时前
HashMap面试题总结
java·开发语言
ekkcole4 小时前
java实现对excel文件合并单元格(只针对文件)
java·开发语言·excel
666HZ6664 小时前
数据结构2.1 线性表习题
c语言·数据结构·算法