算法一:
// 替换加法运算符
int add(int x, int y) {
int a, b;
do {
a = x & y;
b = x ^ y;
x = a << 1;
y = b;
} while (a);
return b;
}
int divideby3 (int num) {
int sum = 0;
while (num > 3) {
sum = add(num >> 2, sum);
num = add(num >> 2, num & 3);
}
if (num == 3)
sum = add(sum, 1);
return sum;
}
此种方法运用迭代法,即找出了一个算式,两边具有类似的结构,从而可以采用迭代算法;由于不能采用'+'运算符,从而必须自己编写加法运算。可以采用位运算符,n=4a+b;n/3 = a + (a+b)/3;第二个式子的两边都有除以3的结构,然后再观察一下,如果右边等式的除以3为零的时候既可以推出迭代运算。