//检查数字是偶数还是奇数没有/或%运算符.
public class EvenOrOdd {
public static int CheckEvenOrOdd(int num) {
if (num > 2) {
int number = num - 2;
num = CheckEvenOrOdd(number);
}
return num;
}
public static void main(String[] args) {
int num = CheckEvenOrOdd(5322221);
if (num == 1) {
System.out.println("Odd number");
} else {
System.out.println("Even number");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将堆栈大小定义为200m为-xss200m,但如果number大于5322221,则此程序会出现OutOfMemory错误和StackOverflow错误.
建议如何解决这个问题,找到数字是偶数还是奇数.
Psh*_*emo 16
您可以使用一个事实,即每个奇数有1在其二进制表示的末尾,以便它看起来像???????1这里?可以是0或1.这里是你如何可以用二进制和检查- >&
public static boolean isEven(int num) {
return (num & 1) == 0;
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下:
对于奇数
????????1 -> any odd number
000000001 -> one
AND ---------
result 000000001 -> one
Run Code Online (Sandbox Code Playgroud)
对于偶数
????????0 -> any even number
000000001 -> one
AND ---------
result 000000000 -> zero
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3873 次 |
| 最近记录: |