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

本博文源于笔者正在思考的如何用递归进行计算两数之和。读者一般都会想到用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)
相关推荐
wu_jing_sheng07 分钟前
Python中使用HTTP 206状态码实现大文件下载的完整指南
开发语言·前端·python
励志不掉头发的内向程序员26 分钟前
【Linux系列】掌控 Linux 的脉搏:深入理解进程控制
linux·运维·服务器·开发语言·学习
梵得儿SHI34 分钟前
Java 反射机制深度解析:从对象创建到私有成员操作
java·开发语言·class对象·java反射机制·操作类成员·三大典型·反射的核心api
沐知全栈开发37 分钟前
Foundation 折叠列表
开发语言
..Cherry..1 小时前
【java】jvm
java·开发语言·jvm
冷冷的菜哥1 小时前
go邮件发送——附件与图片显示
开发语言·后端·golang·邮件发送·smtp发送邮件
lly2024061 小时前
Linux 文件与目录管理
开发语言
计算机毕业设计木哥1 小时前
计算机毕业设计选题推荐:基于SpringBoot和Vue的爱心公益网站
java·开发语言·vue.js·spring boot·后端·课程设计
deng-c-f2 小时前
Linux C/C++ 学习日记(22):Reactor模式(二):实现简易的webserver(响应http请求)
linux·c语言·网络编程·reactor·http_server
一晌小贪欢2 小时前
Python爬虫第7课:多线程与异步爬虫技术
开发语言·爬虫·python·网络爬虫·python爬虫·python3