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」と比較できますか。 "?

これらの 2 つの関数型に適切な類推があるとすれば、それは何ですか?

*この質問を適切なフォーラムに自由に移行してください。ただし、for ループについて話しているため、最初に実際のプログラミング フォーラムに渡すことにしました。

編集:「初期化」と「条件」については間違いなく正しいと思います。それらは十分に明らかです。しかし、それ以外のことは...よくわかりません。たぶん、i++ は n*/f(x) に似ています。知らない。

EDIT2:誰の答えが「正しい」と認められるのかわかりません...以下の誰かが何らかの方法で明示的に間違っていますか? 私はこれを開いたままにしておきます。あなたが最良だと思う答えに投票してください。私のように決定できない場合は、それらすべてに投票するか、独自の答えを出してください。

4

3 に答える 3

1

i = 0初期化とも言えi < 2、範囲の終点を指定します。i++は、合計演算で想定される暗黙の増分です。

あなたが示した例のように、すべての数学表記がコードに便利に変換できるわけではないことに注意してください。数学の範囲の終点として無限大を指定できる場合もありますが、コードではそのようなことは記述しません (通常、反復と停止の差を確認して、差がしきい値よりも小さい場合に行います)。場合によっては、数学で変数の条件を指定することもできますが (たとえば、3 で割り切れるインデックスを持つものだけを合計したいとします)、JavaScript でそのようなものを指定することはできません。

数学に近いコードを書きたい場合は、Haskell を参照してください。

于 2012-06-03T04:06:00.620 に答える
1

違いは、合計が純粋な関数であるのに対し、for ループはその副作用のためにほとんど排他的に使用されることです。また、for ループの純粋な関数形式 (リスト内包表記など) に移行すると、代わりに foreach ループになるため、初期化子などを失う傾向があります。

于 2012-06-03T04:03:11.887 に答える
1

合計方程式は一連の数値を合計し、for ループは設定された回数アクションを繰り返します。進行中の唯一の合計は の増分ですi。forループを使用して合計を実装できますが、私の意見では、それらは同じ研究分野にはありません。

于 2012-06-03T04:03:41.830 に答える