-- 求1+2+...+n
>> 题目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句
>> 解题思路:使用数组初始化,在构造函数中调用。但是仅限于c++。也可以使用C函数指针,f[2]其中0是递归的,1是求和的。
-- 不同加减乘除做加法
>> 题目:写一个函数,求两个正数之和,要求在函数体内不得使用加减乘除。
>> 解题思路:也是很简单,就是用位运算来替代,计算出两个数,第一个是两个数求异或,第二个数是两个数求与运算并左移一位,如果第二个数为0,说明已经得到和值。返回第一个数即可。
-
public int add(int num1, int num2) {
-
int sum, carry;
-
do {
-
sum = num1 ^ num2;
-
carry = (num1 & num2) << 1;
-
-
num1 = sum;
-
num2 = carry;
-
} while (num2 != 0);
-
-
return num1;
-
}
阅读(2473) | 评论(0) | 转发(0) |