当前位置: 首页 > 面试题库 >

测试值是奇数还是偶数

墨财
2023-03-14
问题内容

我决定使用非常简单的算法创建简单的 isEvenisOdd 函数:

function isEven(n) {
  n = Number(n);
  return n === 0 || !!(n && !(n%2));
}

function isOdd(n) {
  return isEven(Number(n) + 1);
}

如果n具有某些参数,那是可以的,但是在许多情况下会失败。因此,我着手创建健壮的函数,以便在尽可能多的情况下提供正确的结果,以便仅测试javascript数字范围内的整数,其他所有结果均返回false(包括+和-无限)。注意零是偶数。

// Returns true if:
//
//    n is an integer that is evenly divisible by 2
//
// Zero (+/-0) is even
// Returns false if n is not an integer, not even or NaN
// Guard against empty string

(function (global) {

  function basicTests(n) {

    // Deal with empty string
    if (n === '') 
      return false;

    // Convert n to Number (may set to NaN)
    n = Number(n);

    // Deal with NaN
    if (isNaN(n)) 
      return false;

    // Deal with infinity - 
    if (n === Number.NEGATIVE_INFINITY || n === Number.POSITIVE_INFINITY)
      return false;

    // Return n as a number
    return n;
  }

  function isEven(n) {

    // Do basic tests
    if (basicTests(n) === false)
      return false;

    // Convert to Number and proceed
    n = Number(n);

    // Return true/false
    return n === 0 || !!(n && !(n%2));
  }
  global.isEven = isEven;

  // Returns true if n is an integer and (n+1) is even
  // Returns false if n is not an integer or (n+1) is not even
  // Empty string evaluates to zero so returns false (zero is even)
  function isOdd(n) {

    // Do basic tests
    if (basicTests(n) === false)
      return false;

    // Return true/false
    return n === 0 || !!(n && (n%2));
  }
  global.isOdd = isOdd;

}(this));

谁能看到上述任何问题?是否有更好的版本(即更准确,更快或更简洁而不被混淆)?

有许多与其他语言有关的帖子,但是我似乎找不到ECMAScript的权威版本。


问题答案:

使用模数:

function isEven(n) {
   return n % 2 == 0;
}

function isOdd(n) {
   return Math.abs(n % 2) == 1;
}

您可以使用以下命令检查Javascript中的任何值是否可以强制转换为数字:

Number.isFinite(parseFloat(n))


This check should preferably be done outside the `isEven` and `isOdd`
functions, so you don't have to duplicate error handling in both functions.


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

  • 问题内容: 如何确定给定数字是偶数还是奇数?我很久以来一直想弄清楚这个问题,而且还没到任何地方。 问题答案: 你可以使用模运算符,但这可能会很慢。如果是整数,则可以执行以下操作: 这是因为低位将始终设置为奇数。

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

  • 本文向大家介绍在JavaScript中将数组的和确定为偶数还是奇数,包括了在JavaScript中将数组的和确定为偶数还是奇数的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个JavaScript函数,该函数接受一个整数数组arr。如果数组的所有元素之和为奇数,则函数应返回字符串“ odd”,如果为偶数则返回“偶数”。 示例 以下是代码- 输出结果 以下是控制台输出-

  • 我将堆栈大小定义为200M为-xss200M,但如果数值大于5322221,则该程序出现OutOfMemory错误和StackOverflow错误。 建议如何解决这个问题,找到数字是偶数还是奇数。

  • 在Java中,如何在不使用条件或三元运算符的情况下确定一个数字是奇数还是偶数? 这个问题是我的老师提出的。他还给了我一个提示,使用位运算符是可能的。