factDouble

引数に指定した自然数の二重階乗を求めます。戻値の型はDouble型です。再帰関数。階乗を求めるにはfact関数を使います。

構文
  1. Double = factDouble( 数値 )
引数
数値
0以上の整数
戻値
引数に指定した数値の二重階乗。

プログラム

////////////////////////////////////////////////// // 【引数】 // 数値 : 0以上の整数 // 【戻値】 // 引数に指定した数値の二重階乗。 ////////////////////////////////////////////////// FUNCTION factDouble(n) IF n <> ABS(INT(n)) THEN EXIT IFB n = 0 THEN RESULT = 1 EXIT ENDIF IFB n <= 2 THEN RESULT = n ELSE RESULT = n * factDouble(n - 2) ENDIF FEND

解説

  1. 2行目
    IF n <> ABS(INT(n)) THEN EXIT
    変数nが0以上の整数でなければ終了
  2. 3-6行目
    IFB n = 0 THEN RESULT = 1 EXIT ENDIF
    変数nが0ならば
    1を返して終了。
  3. 7-11行目
    IFB n <= 2 THEN RESULT = n ELSE RESULT = n * factDouble(n - 2) ENDIF
    変数nが2以下ならば
    変数nを返す。
    それ以外ならば
    \(n \times (n - 2)!!\)を返す。

二重階乗

\(n\)の二重階乗\(n!!\)は、1から\(n\)までの\(n\)と同じ奇偶性を持つものだけをすべて掛けた積を言います。例えば5の二重階乗の場合、

\[5!! = 5 \times 3 \times 1 = 15\]

となります。

定義

  1. \[n!! = \prod_{k=0}^{\lceil n/2 \rceil -1}(n-2k) = n(n-2)(n-4) \cdots \]
  2. 偶数\[n!! = \prod_{k=1}^{n/2}(2k) = n(n-2)(n-4) \cdots 4 \cdot 2 \]
  3. 奇数\[n!! = \prod_{k=1}^{(n+1)/2}(2k-1) = n(n-2)(n-4) \cdots 3 \cdot 1 \]
  4. \[0! = 1\]