首页 > 解决方案 > 我如何向第三方解释最后一行

问题描述

这段代码有一些东西我很难向第三方解释。当递归调用我们的函数时,从 n 中减去 2 背后的逻辑是什么?

function is_even(n) {
    if (n<0) {
        return Math.abs(n) 
    }
    if (n=== 0) {
        return true;
    } else if (n === 1) {
        return false;
    } else {
        return is_even(num - 2);
    }
}

console.log(is_even(8));

标签: javascriptfunctionrecursion

解决方案


所以这里的逻辑是,你基本上可以通过从它减去 2 直到它是 0 或 1 来判断某些东西是奇数还是偶数。

你减去 2 因为如果你再减去任何东西,你可能会过冲并最终得到一个负数。通过减去两个,无论您从哪个数字开始,您总是会得到 1 或 0。

如果你从 9 点开始

is_even(9)
9 - 2 = 7 | is_even(7)
7 - 2 = 5 | is_even(5)
5 - 2 = 3 | is_even(3)
3 - 2 = 1  => 1 indicates it is odd and the function will return

也许写出一些像上面这样的例子是向第三方解释的好方法。


推荐阅读