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

递归函数,通过从 n 到 n = 0 或 1 中减去 2 来确定数字是偶数还是奇数

公沈浪
2023-03-14

零是偶数。

一个很奇怪。

对于任何其他数N,其均匀度与N-2相同。

定义一个递归函数甚至对应于此描述。该函数应接受单个参数(正整数)并返回布尔值。

这是我对isEven的实现:

let isEven = function(n){
    even = 0;
    odd = 1;
    if(n == even){
      return true;
    }
    else if (n == odd) {
      return false;
    }
    else{
      n -= 2;
      console.log(n); //Used to see value of n through each call
      isEven(n);
    }
  };

当我调用这个函数时,它返回<code>undefined</code>

  document.write(isEven(50)); //prints `undefined`

console.log(n)的输出如下:

Failed to load resource: net::ERR_FILE_NOT_FOUND
48
46
...
0

我不知道为什么未能加载资源:净::ERR_FILE_NOT_FOUND是第一个输出,但在那之后n正在点击0,那么为什么是

if(n == even){
          return true;
        }?  

执行

共有2个答案

冯茂实
2023-03-14

但是不要错过学习相互递归的机会!

const isEven = (n = 0) =>
  n === 0
    ? true
    : isOdd (n - 1)

const isOdd = (n = 0) =>
  n === 0
    ? false
    : isEven (n - 1)
    
console .log
  ( isEven (0)  // true
  , isEven (1)  // false
  , isEven (2)  // true
  , isEven (3)  // false
  , isEven (99) // false
  )
  
console .log
  ( isOdd (0)  // false
  , isOdd (1)  // true
  , isOdd (2)  // false
  , isOdd (3)  // true
  , isOdd (99) // true
  )
卢深
2023-03-14

您需要返回递归调用的结果。

let isEven = function(n){
    const          // declare local variables/constants
        even = 0,
        odd = 1;
    if(n == even){
      return true;
    }
    else if (n == odd) {
      return false;
    }
    else{
      //n -= 2; no need to reassign a value for a single use
      return isEven(n - 2); // return here
    }
  };

console.log(isEven(50));
console.log(isEven(21));
 类似资料:
  • 问题内容: 我试图写一个递归函数,从打印到,但我不知道该怎么做。我不小心做了一个从到的打印: 我不知道这是否有帮助,也许我可以更改代码中的内容以使其从变为? 问题答案: 你差点知道了!这是一个固定的简化版本: 注意: 您不必从仅打印值的递归函数返回任何内容 对于升序打印时,声明必须放在 后 递归调用 如果仅打印,则递归退出,因为我们只在打印,此后无需执行任何操作即可返回(Python的默认返回值)

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

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

  • 问题内容: 是否真的计算了PHP数组的所有元素,还是将此值缓存在某个地方并被获取? 问题答案: 好吧,我们可以看看源代码: call ,这反过来又需要非递归数组,该数组是通过以下方式实现的: 所以你可以看到,它的。

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

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