【发布时间】:2016-06-26 20:15:11
【问题描述】:
这是书中的一个例子。如果是偶数,该函数返回 TRUE,否则返回 FALSE。我不明白它是如何工作的。这是我的理解:
- 42 绑定到 n
- 创建“偶数”函数
- x 绑定到 = 42 的 n
- x != 0
- 启动“其他”
- 创建“奇数”函数
- 奇数(42 - 1)
- 正在启动“!even(41)”。
JS 对 "even(41)" 做了什么? TRUE 从何而来?我理解它的方式应该只在 x === 0
时返回 TRUEdocument.write(
((n) => {
const even = (x) => {
if (x === 0) return true;
else {
const odd = (y) => !even(y);
return odd(x - 1);
}
}
return even(n)
})(42)
)
【问题讨论】:
-
这是一个递归函数,
x === 0是基本情况。 -
是的,尝试手动写下递归,就像他们在这里为阶乘所做的那样,例如 mitpress.mit.edu/sicp/full-text/sicp/book/node15.html
-
这似乎是一种查找数字是偶数还是奇数的糟糕方法
-
@redu 绝对是这样。我认为它的目的是作为递归课程,这只是一个非常糟糕的课程。
-
而这段“代码”中最可怕、最丑陋、最恶心的部分是
(n-1)次重新定义了odd函数。
标签: javascript function inline-functions