给定两个数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);
    }

}
posted @ 2020-06-18 10:47  winner66  阅读(481)  评论(0)    收藏  举报