草庐IT

javascript - Eloquent JavaScript 2nd Edition 递归练习解答

coder 2025-01-28 原文

我试图解决在线书籍 eloquentjavascript 2nd edition 的递归练习:

问题是这样的:

We’ve seen that % (the remainder operator) can be used to test whether a number is even or odd by using % 2 to check if it’s divisible by two. Here’s another way to define whether a (positive, whole) number is even or odd:

  • Zero is even.
  • One is odd.
  • For any other number N, its evenness is the same as N - 2.

Define a recursive function isEven corresponding to this description. The function should accept a number parameter and return a boolean.

Test it out on 50 and 75. See how it behaves on -1. Why? Can you think of a way to fix this?

这是我尝试过的并且有效:

function isEven(number) {
    if (number == 0) {
        return true;
    } else {
        return (-number % 2 == 0) ? true : false;
    }
    return isEven(number - 2);
}

console.log(isEven(-1));

但是,这似乎是一个错误的答案,因为据我了解,作者希望我使用 - 2 方法。我想知道这是否确实是正确的答案,或者如果它是错误的,有人可以指出我正确的方向。

最佳答案

我认为您感到困惑的原因是您不了解递归的工作原理。它是 n-2 的原因是,它取数字并减去 2,直到它为零或一。因此给我们一个真或假。

希望对您有所帮助。阅读递归过程的工作原理。

关于javascript - Eloquent JavaScript 2nd Edition 递归练习解答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255760/

有关javascript - Eloquent JavaScript 2nd Edition 递归练习解答的更多相关文章

随机推荐