本博文源于笔者正在思考的如何用递归进行计算两数之和。读者一般都会想到用while循环进行操作,位运算两数之和的思想就犹如辗转相除法。文章并附加了对这个方法的流程演示
问题来源
想要用递归实现两数之和。
代码实现
#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)