javascript - 如何在 JavaScript 中使用递归函数检查数字是否为偶数

标签 javascript function recursion

我正在尝试从这里做一个练习 https://www.w3resource.com/javascript-exercises/javascript-recursion-function-exercise-7.php

我理解这个解决方案,但是,我有点好奇为什么我的程序没有产生与上面相同的答案。我选择函数返回的方式略有不同,但是,它产生一个数字而不是 true 或 false。

function checkeven(num) {
    if (num === 0) {
        return true;
    } else if (num === 1) {
        return false;
    } else {
        console.log(num);
        return num - checkEven(num - 2);
    }
}

   
console.log(checkeven(8));
console.log(checkeven(9));

最佳答案

在 JavaScript 中 - 当运算符的操作数具有不同类型时 - 会发生类型 corecion,即它尝试将其中一个操作数转换为与运算符兼容的类型

试试这个: console.log(2 + true)//3

console.log(true + false)//1

根据您的情况,请考虑尝试 checkeven(2) 时会发生什么

checkeven(2) = 2 - checkeven(0) = 2 - true = 1

关于javascript - 如何在 JavaScript 中使用递归函数检查数字是否为偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53882710/

相关文章:

javascript - 在父元素外部单击时删除类

javascript - Bootstrap Typeahead - 不要自动选择第一项?

C# - 无法访问 C++/CLI .dll 中包含的方法

c++ - 退出整个递归堆栈

python - 有没有办法判断我是否在 Python 中使用递归?

python - Python 3.2 中的递归

javascript - 将 "loose equality logic"重写为 "strict equality logic"即 : `==` to `===` ? 的最短方法是什么

javascript - Angular 在 ui-router View 中不显示非英文字母

javascript - 为什么在 log 之后声明的内部函数中有相同的变量名时,内部函数中的变量返回 nan

C++函数指针返回类型