2014-10-28 49 views
0

所以基本上我刚开始学习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?

+1

是的。基本上。它使用递归做'n - = 2'直到'n'变成'1'或'0'。 – soktinpk 2014-10-28 22:56:44

+0

是的,功能不断迭代,直到返回true或返回false – 2014-10-28 22:56:55

+0

http://stackoverflow.com/questions/126756/examples-of-recursive-functions – jball 2014-10-28 23:26:40

回答

1

如果数字是负数,则函数使其成为正值,并再次对正值运行,如果它大于1,它会再次运行,直到数字为1或0,每次迭代将数值减2 。这就是所谓的递归。

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

请注意,当'底部'函数返回'真',这是从倒数第二个函数返回的结果是从倒数第二个函数返回的结果,直到第一个为止。 – Phrogz 2014-10-29 02:39:34

0

当n < 0时,它会在函数n之前加一个减号并再次运行它。如果否则那个函数再次被调用,但是n减少2.这个运行直到你得到真或假。