想到用位运算了,但没想到这么简洁的算法
// 程序员面试题精选100题(55)-不用+、-、×、÷做加法.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int AddWithoutArithmetic(int num1, int num2)
{
if(num2 == 0)
return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return AddWithoutArithmetic(sum, carry);
}
int _tmain(int argc, _TCHAR* argv[])
{
int a,b;
cin>>a;cin>>b;
cout<<AddWithoutArithmetic(a,b)<<endl;
system("pause");
return 0;
}
位运算实现加法
本文介绍了一种不使用常规算术运算符实现两个整数相加的方法。通过位运算中的异或和与操作,结合递归调用,巧妙地实现了加法的功能。此算法避免了直接使用+、-、*、/等运算符,展示了位运算的强大之处。
963

被折叠的 条评论
为什么被折叠?



