无法获得该功能的工作原理

时间:2014-10-28 22:53:11

标签: javascript

所以基本上我刚刚开始学习JS并进行了一些练习,基本上是一个函数来检查数字是否是不使用模运算。当我完成它时,我只是想比较我的答案,我真的不知道它是如何工作的。

function isEven(n) {
  if (n == 0)
    return true;
  else if (n == 1)
    return false;
  else if (n < 0)
    return isEven(-n);
  else
    return isEven(n - 2);
}

我不确定部分(n-2)如何工作它是否以某种方式将数字放在一个循环中并且基本上n- = 2直到数字变为1或0?

3 个答案:

答案 0 :(得分:2)

让我们来看看运行此功能时幕后发生的事情:

isEven(8)
// isEven(8) Is 8 even?
//   isEven(6)  Is 6 even?
//     isEven(4)  Is 4 even?
//       isEven(2) Is 2 even?
//         isEven(0) Is 0 even? --> Yes, the function immediately returns true
// so I know the one at the top, 8, is even

等等。对于任何偶数,它最终会变为0.对于任何奇数,它最终会变为1。

答案 1 :(得分:1)

如果数字为负数,则该函数将其设置为正数并再次针对正值运行,如果它是&gt; 1,它将再次运行,直到数字为1或0,每次迭代时将数字减少2。它被称为递归。

答案 2 :(得分:0)

当n <0时,它在函数中的n之前放置一个减号并再次运行它。如果是,那么再次调用该函数但是n减少2.这一直运行直到你得到真或假。