我正在阅读一本 JavaScript 书籍,我是新手,所以我学习了递归部分,我了解了递归的工作原理,但对我来说这部分并不难,是数学部分。
这是代码:
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);
}
假设我将 50 作为值传递给函数 right
isEven(50);
这给了我真的...为什么 50 == 0 是真的或 75 == 1 是假的...我真的不明白。
最佳答案
当您将 50
传递给此函数时,它会转到最后一个 block (else
) 并递归执行。当你写return isEven(n - 2);
时,你执行isEven(48)
,然后下一次isEven(46)
和以此类推,直到到达 isEven(0)
。
这会调用第一个 if
block ,您会得到 true
作为输出。 true
由 isEven(0)
返回,后跟 isEven(2)
(因为当您执行 isEven(2)
你最终会去 return isEven(0)
),这会在堆栈中冒泡,最终将 isEven(50)
的输出返回为 true
.
关于javascript - 需要更好地理解这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291867/