当前位置: 首页 > 知识库问答 >
问题:

stackoverflow错误:检查number是偶数还是奇数,不使用%或/运算符[duplicate]

周飞
2023-03-14
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个答案

洪捷
2023-03-14

您可以使用一个事实,即每个奇数在其二进制表示的末尾都有1,因此它看起来像????????1,其中可以是0也可以是1。下面是如何使用二进制和->&进行检查

public static boolean isEven(int num) {
    return (num & 1) == 0;
}

它的工作原理是这样的:

对于奇数

          ????????1 -> any odd number
          000000001 -> one
AND       ---------
result    000000001 -> one
          ????????0 -> any even number
          000000001 -> one
AND       ---------
result    000000000 -> zero
 类似资料:
  • 问题内容: 如何确定给定数字是偶数还是奇数?我很久以来一直想弄清楚这个问题,而且还没到任何地方。 问题答案: 你可以使用模运算符,但这可能会很慢。如果是整数,则可以执行以下操作: 这是因为低位将始终设置为奇数。

  • 问题内容: 我决定使用非常简单的算法创建简单的 isEven 和 isOdd 函数: 如果n具有某些参数,那是可以的,但是在许多情况下会失败。因此,我着手创建健壮的函数,以便在尽可能多的情况下提供正确的结果,以便仅测试javascript数字范围内的整数,其他所有结果均返回false(包括+和-无限)。注意零是偶数。 谁能看到上述任何问题?是否有更好的版本(即更准确,更快或更简洁而不被混淆)? 有

  • 问题内容: 找出数字/变量在PHP中是奇数还是偶数的最简单,最基本的方法是什么?与mod有关吗? 我已经尝试了一些脚本,但是.. google目前无法交付。 问题答案: 您认为mod是一个不错的起点是正确的。这是一个表达式,如果是偶数则返回true,如果是奇数则返回false: 例: 输出: 甚至

  • 问题内容: 我正在尝试制作一个程序来检查单词是否是回文,并且到目前为止,它可以与具有偶数个数字的单词一起使用。我知道如果字母的数量为奇数时如何使它起作用,但是我只是不知道如何确定数字是否为奇数。有什么简单的方法可以找到数字是奇数还是偶数? 仅供参考,这是我的代码: 谢谢 问题答案: if num % 2 == 0: pass # Even else: pass # Odd 该符号就像除法一样,仅检

  • 本文向大家介绍PHP程序检查一个数的除数总数是偶数还是奇数,包括了PHP程序检查一个数的除数总数是偶数还是奇数的使用技巧和注意事项,需要的朋友参考一下 要检查一个数的除数总数是偶数还是奇数,代码如下: 示例 输出结果 定义了一个名为“ divisor_count”的函数,该函数给出给定数字的除数,该除数作为参数传递给该函数。现在,检查每个除数,看是否可以将其除以2,如果是,则将其除以偶数,否则将其

  • 找到给定数字是偶数或奇数,是一个经典的C程序。 我们将在C中学习使用条件语句if-else 。 算法 (Algorithm) 这个程序的算法很简单 - START Step 1 → Take integer variable A Step 2 → Assign value to the variable Step 3 → Perform A modulo 2 and check