不使用比较运算符构造max()和min()
程序员文章站
2022-06-07 14:38:53
...
题目要求
不直接使用比较运算符:>、<、>=、<=、==、!= ,不使用内置函数Math.max()、Math.min(),自己构造求解求解最大值和最小值的函数。
分析
证明如下:
据上图证明的式子,就可以构造出所需要的max()和min()了呢。
Java编程实现
import java.util.Scanner;
public class MaxAndMin {
private static int max (int a, int b) {
return (a+b+Math.abs(a-b))/2;
}
private static int min (int a, int b) {
return (a+b-Math.abs(a-b))/2;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt(), b = scanner.nextInt();
System.out.println(a +"和" + b + "的最大值是:" + max(a, b));
System.out.println(a +"和" + b + "的最小值是:" + min(a, b));
scanner.close();
}
}
测试举例
java.lang.Math的做法
很简单啦,就没上面这么绕了……
max():
@HotSpotIntrinsicCandidate
public static int max(int a, int b) {
return a >= b ? a : b;
}
min():
@HotSpotIntrinsicCandidate
public static int min(int a, int b) {
return a <= b ? a : b;
}