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

本博文源于笔者正在思考的如何用递归进行计算两数之和。读者一般都会想到用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)
相关推荐
人道领域几秒前
【0-1的agent进阶篇】Prompt 与上下文工程
java·开发语言·prompt·mcp
aaPIXa6222 分钟前
C++大型项目模块化拆分实战记录
开发语言·c++
z落落5 分钟前
C# WinForm 线程池与事件等待+进度条暂停恢复实战案例
开发语言·c#
石山代码10 分钟前
C++23 新特性在 CLion 中的实战体验
开发语言·c++·c++23
浮江雾11 分钟前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础
北冥you鱼26 分钟前
Go Modules 使用指南:从入门到精通
开发语言·后端·golang
l1t29 分钟前
duckdb 1.6dev新增的.manual命令
开发语言·数据库
你怎么知道我是队长35 分钟前
JavaScript的函数介绍
开发语言·前端·javascript
YMWM_41 分钟前
python-venv虚拟环境
linux·开发语言·python
不负岁月无痕1 小时前
STL -- C++ 红黑树封装 Map 和 Set
java·c语言·开发语言·c++·面试