1

我打算用这张图作为参考,所以看看它,它只是一个简单的求和方程,没有任何输入。http://ww2.tnstate.edu/ganter/BIO311-Ch11-Eq2a.gif

假设我有一个简单的 javascript for 循环

for( i=0; i<2 ; i++) {
//do
}
else {
//etc

现在,在我看来,for 循环有点类似于求和方程。

所以如果 i=0 是“初始化”,i<2 是“条件”,而 i++ 是“增量”。可以将初始化与“i = 1”进行比较,将“条件”与“I”进行比较,将“n1”与“增量”进行比较,将n *(f(x))与“do”进行比较吗? “?

如果有的话,这两种函数类型的适当类比是什么?

*请随时将此问题迁移到适当的论坛,但我想我首先将它传递给真正的编程论坛,因为我正在谈论 for-loops。

编辑:我认为我对“初始化”和“条件”绝对是正确的,这些都很明显。但其余的......我只是不确定。也许 i++ 更像 n*/f(x)。我不知道。

EDIT2:我不知道谁的答案是“正确的”......下面的任何人都以任何方式明确错误吗?我将保持开放状态,请投票选出您认为最好的答案。如果您不能像我一样决定,请为所有这些投票和/或给出您自己的答案

4

3 回答 3

1

不同之处在于 summation 是一个纯函数,而 for 循环几乎专门用于其副作用。当你转向纯函数形式的 for 循环时,例如列表推导式,你往往会丢失初始化器等,因为它变成了一个 foreach 循环。

于 2012-06-03T04:03:11.887 回答
1

求和方程对一系列数字求和,for 循环重复一个动作一定次数。唯一的求和是 的增量i。虽然您可以使用 for 循环来实现求和,但我认为它们不在同一个研究领域。

于 2012-06-03T04:03:41.830 回答
1

可以说i = 0是初始化,并i < 2指定范围的终点。i++是求和运算假定的隐式增量。

请注意,并非所有数学符号都可以方便地转换为您给出的示例中的代码。有时,您可以在数学中将无穷大指定为范围的终点,但您不会在代码中编写类似的东西(通常,您会检查迭代之间的差异,并在差异小于阈值时停止)。有时,您甚至可以在数学中指定变量的条件(假设我们只想将索引可整除为 3 的那些相加),但您将无法在 javascript 中指定类似的内容。

如果你想编写接近数学的代码,你可以看看 Haskell。

于 2012-06-03T04:06:00.620 回答