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

本博文源于笔者正在思考的如何用递归进行计算两数之和。读者一般都会想到用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)
相关推荐
狮子雨恋几秒前
anaconda python环境和QT python环境不一致如何解决
开发语言·python·qt
独立开发之道10 分钟前
【three.js教程】Three.js 矩阵变换:position/quaternion/scale 和 matrix 到底怎么配合
开发语言·javascript·矩阵
纪念 22911 分钟前
数据结构排序(四)
开发语言·数据结构
IvanCodes13 分钟前
Python 基础语法(四):循环结构与流程控制
开发语言·python
OPEN-F14 分钟前
C++工程化:编译链接、调试与性能优化
开发语言·c++
坐吃山猪27 分钟前
【多线程】什么时候必须/推荐使用Thread类
java·开发语言
一只小阿乐36 分钟前
java 快速上手开发 2
java·开发语言·前端
张宇Joaquin41 分钟前
灵渠测试工具-urma_perftest
java·开发语言
高彬1 小时前
SAP ECC6.0 对接 C# web Services服务
开发语言·前端·c#·sap
张小姐的猫1 小时前
【C++开发脚手架】 —— Jsoncpp上手
java·linux·开发语言·网络·c++·tcp/ip·udp