本ページには広告が含まれています。
引数に指定した自然数の二重階乗を求めます。戻り値の型はDouble型です。再帰関数。階乗を求めるにはfact関数 (自作関数)を使います。
- 構文
- 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
解説
- 2行目
- nが0以上の整数でなければ終了
IF n <> ABS(INT(n)) THEN EXIT
- 3-6行目
- もしn が0ならば1を返して終了。
IFB n = 0 THEN RESULT = 1 EXIT ENDIF
- 7-11行目
- もしnが2以下ならばnを返す。そうでなければ、n×(n-2)!を返す。再帰呼び出し。
IFB n <= 2 THEN RESULT = n ELSE RESULT = n * factDouble(n - 2) ENDIF
二重階乗
\(n\)の二重階乗\(n!!\)は、1から\(n\)までの\(n\)と同じ奇偶性を持つものだけをすべて掛けた積を言います。例えば5の二重階乗の場合、
\[5!! = 5 \times 3 \times 1 = 15\]となります。
定義
- \[n!! = \prod_{k=0}^{\lceil n/2 \rceil -1}(n-2k) = n(n-2)(n-4) \cdots \]
- 偶数\[n!! = \prod_{k=1}^{n/2}(2k) = n(n-2)(n-4) \cdots 4 \cdot 2 \]
- 奇数\[n!! = \prod_{k=1}^{(n+1)/2}(2k-1) = n(n-2)(n-4) \cdots 3 \cdot 1 \]
- \[0! = 1\]
関連記事
- fact関数 (自作関数)
- 引数に指定した数値の階乗を求めます。
- GCD関数 (自作関数)
- 最大公約数を求めます。
- ABS関数 (スクリプト関数)
- 引数の絶対値を求めます。
- ARCCOS関数 (スクリプト関数)
- 引数の逆余弦を求めます。
- CEIL関数 (スクリプト関数)
- 正の方向へ切り上げた数値を返します。
- LN関数 (スクリプト関数)
- 自然対数を求めます。
- LOGN関数 (スクリプト関数)
- 常用対数を求めます。
- ZCUT関数 (スクリプト関数)
- マイナス値を0にして返します。プラス値はそのままの値を返します。
- isOdd関数 (自作関数)
- 引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
- radToDeg関数 (自作関数)
- 弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。