给定两个数a和b, 如何不用比较运算符, 返回较大的数
给定两个数a和b, 如何不用比较运算符, 返回较大的数
public class CompareAandB {
/**
* 思路:
* b>a, 则构建 (a+b + b-a) / 2
* b<a, 则构建 (a+b + a-b) / 2
* 可推出:(a + b + Math.abs(a-b)) / 2
*
*
* @param a
* @param b
* @return
*/
public static int method_1(int a, int b){
int result = (a + b + Math.abs(a-b)) / 2;
System.out.println("result:" + result);
return result;
}
/**
* 思路:
* b>a, 则构建 0*a + 1*b
* b<a, 则构建 1*a + 0*b
* 如何得出0:(大%小)/大
* 如何得出1:(小%大)/小
* 可推出:(b%a)/b * a + (a%b)/a * b
*
* @param a
* @param b
* @return
*/
public static int method_2(int a, int b){
//如果b>a,则b%a
int result = (b%a)/b * a + (a%b)/a * b;
System.out.println("result:" + result);
return result;
}
public static void main(String[] args) {
method_2(2,5);
}
}

浙公网安备 33010602011771号