微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何向第三方解释最后一行

如何解决我如何向第三方解释最后一行

关于此代码,我很难向第三方解释。递归调用函数时,从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));

解决方法

因此,这里的逻辑是,您基本上可以通过减去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

也许写出类似上面的示例是向第三方解释的好方法。

,

我认为您的is_even函数需要一些调整才能按预期工作:

function is_even(n) {
    if (n < 0) {
        n = Math.abs(n)

    } if (n === 0) {
        return true;

    } else if (n === 1) {
        return false;
    }
    else {
        return is_even(n - 2);
    }
}

该函数仅检查两件事,如果为0,则返回True,如果为1,则返回False。

如果您的数字大于0或1,例如2,3,4,5,6,7,8,...

else语句的递归性质意味着:您总是可以将任意正数减去2次,使其变为0或1。

这与将任何数字除以2一样,剩余部分始终为0或1,如果为0,则数字为偶数;如果为1,则数字为奇数。

,

您一直减去2直到n为1或0。如果为0,则为偶数;如果为1,则为奇数。通过减去2,您几乎可以找到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(n - 2);
    }
}


console.log(is_even(8));
,

首先,该行应为:

return is_even(n - 2);

代替

return is_even(num - 2);

来解释一下:

给定数字n,该函数继续从数字中减去2,直到余数为负数,0或1。 如果数字为奇数,则在随后减去2时将返回1。如果为偶数,则余数将为0。 如果数字小于2,则余数为负。再次调用该函数的要点是以递归的方式继续减去2,直到最终值是0,1或负数。

当传递负值时,它将返回绝对值,而不是确定奇数或偶数。

  • 在第一次迭代中-> n = 8,再次调用该函数。
  • 下一个 迭代-> n = 6,即(8-2),再次调用该函数。
  • 下一个 迭代-> n = 4,即(6-2),再次调用该函数。
  • 下一个 迭代-> n = 2,即(4-2),再次调用该函数。
  • 下一个 迭代-> n = 0,即(2-2),函数停止并返回true。
,

is_num是一个递归函数,该函数在执行过程中会自行调用。 现在,当您编写“ return is_even(num-2);”时那么您发送的参数比原始值num小2个单位。 返回后,is_even(num-2); ... is_even将再次被调用,但是参数n的值将减少2个单位。

n的值将继续减小,递归将继续进行,直到返回某些内容为止,并且返回的值将在首先调用它的行处被接收。

有关更多信息,您可以参考此link

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。