【发布时间】:2013-02-02 03:00:28
【问题描述】:
// 在没有 / 或 % 运算符的情况下检查数字是偶数还是奇数。
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");
}
}
}
我将堆栈大小定义为 200m 为 -xss200m,但是如果数字大于 5322221,此程序会出现 OutOfMemory 错误和 StackOverflow 错误。
建议如何解决这个问题,找出偶数或奇数。
【问题讨论】:
-
您可以避免内存问题,使用您当前的实现,通过将其从递归更改为迭代。另外,请考虑按位运算符。
-
您可以使用
& 1来检查它是偶数还是奇数。 There was a question about this recently -
你可以实现 - if ( (number % 2) == 0) { System.out.println("Even number"); } else { System.out.println("奇数"); }
标签: java