求两个数的和
#include<bits/stdc++.h>
using namespace std;
int add(int a,int b){
int c=0;
int sum = 0;
for(int i=0;i<32;i++){
int a1 = (a>>i)&1,b1=(b>>i)&1;
sum ^=(a1^b1^c)<<i;
c = (a1&&b1)||(a1&&c)||(b1&&c);
}
return sum;
}
int Add(int num1,int num2) {
int tmp = 0;
while(num1 != 0){
tmp = num1 ^ num2;
num1 = (num1 & num2) << 1;
num2 = tmp;
}
return num2;
}
int main(){
cout<<"4+242="<<add(4,242)<<endl;
cout<<"-4+24="<<add(-4,24)<<endl;
cout<<"-4-3="<<add(-4,-3)<<endl;
}
求1+2+…+n
#include<bits/stdc++.h>
using namespace std;
int sum(int n){
int s = n;
n != 0 && (s += sum(n - 1))!= 0;
return s;
}
int main(){
cout<<sum(5)<<endl;
}
两个数相乘
#include<bits/stdc++.h>
using namespace std;
int mul(int a,int b)
{
if(b==0||a==0)return 0;
if(b==1)return a;
return a+mul(a,b-1);
}
int mul1(int a,int b){
int s = mul(a,abs(b));
return b>0?s:-s;
}
int mul2(int a,int b){
if(b==0||a==0)return 0;
return int(double(a)/(1.0/b)+0.99);
}
int main(){
cout<<mul1(5,3)<<endl;
cout<<mul2(5,3)<<endl;
}