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

本博文源于笔者正在思考的如何用递归进行计算两数之和。读者一般都会想到用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)
相关推荐
SuperByteMaster19 小时前
keil 工程 .gitignore配置文件
c语言
FQNmxDG4S19 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
前端老石人19 小时前
HTML 字符引用完全指南
开发语言·前端·html
matlab_xiaowang19 小时前
Redux 入门:JavaScript 可预测状态管理库
开发语言·javascript·其他·ecmascript
虹科网络安全20 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje20 小时前
Java语法进阶
java·开发语言·jvm
老前端的功夫20 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_4352879220 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
止语Lab20 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
yaoxin52112321 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python