7.5 Block[], Module[]

(工事中)

関数の中である程度複雑な計算をする場合、 変数を使用する必要が生じるでしょうが、 局所的な変数を使用するようにしないと思わぬ副作用が生じます。

次の例は、 局所変数 ip (初期値として $ 1$ を代入) を用いて、 階乗 $ n!$ を計算するための関数を定義したものです (もちろん Mathematica には、階乗を計算する演算子 ! があるので、 こういう関数を作る必要はありませんが)。
  fact[n_]:=Module[{i,p=1}, For[i=1, i<=n, i++, p=p*i]; p]

C言語だったら次のように書くところです。
int fact(int n)
{
  int i, p = 1;
  for (i = 1; i <= n; i++)
    p *= i;
  return p;
}

桂田 祐史
2018-10-12