转自何海涛博客: #include "stdafx.h" #include <iostream> using namespace std; int new_add(int a,int b){ if(!b) return a; int temp=a^b; //不考虑进位的情况下,对两个数字进行位异或; int temp1=(a&b)<<1; //计算进位:两位同为1的时候需要进位,采用位的与操作,与得1以后进位; return new_add(temp,temp1);//将上面两个结果相加; } void main(){ cout<<new_add(3,4)<<endl; } 非递归实现: // test35.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" int add(int a,int b){ while((a&b)<<1){ int temp=a; a=a^b; b=(temp&b)<<1; } return a^b; } void main(){ printf("%d/n",add(20,30)); }