package demo;
/*
* 题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
*/
public class Offer_30 {
public int Add(int num1, int num2) {
if (num1 >= 0 && num2 >= 0) {
for (int i = 1; i <= num2; i++) {
num1++;
}
return num1;
}
if (num1 >= 0 && num2 < 0) {
for (int i = 0; i < num1; i++) {
num2++;
}
num1 = num2;
return num1;// 注意这里每个if语句都要有返回值,否则每个循环会依次继续执行,
// 可能会造成一个add操作运行了多个if语句得到错误答案,
// 加上return语句使得每个if语句执行完强制退出if语句,
// 保证了每种情况的if语句都只执行了一次,两个数相加的正负情况只有4种,
// 4种情况涵盖了add的所有操作.
}
if (num1 < 0 && num2 >= 0) {
for (int i = 1; i <= num2; i++) {
num1++;
}
return num1;
}
if (num1 < 0 && num2 < 0) {
for (int i = num2; i < 0; i++) {
num1--;
}
return num1;
}
return num1;
}
public static void main(String[] args) {
Offer_30 off = new Offer_30();
System.out.println(off.Add(1, 2));
System.out.println(off.Add(1, -2));
System.out.println(off.Add(-2, 1));
System.out.println(off.Add(-1, -2));
}
}
不用加减乘除做加法
最新推荐文章于 2024-02-25 21:31:38 发布