factDoubleファクトダブル関数

本ページには広告が含まれています。

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

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

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   数値 : 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行目
    UWSC
    	IF n <> ABS(INT(n)) THEN EXIT
    nが0以上の整数でなければ終了
  2. 3-6行目
    UWSC
    	IFB n = 0 THEN
    		RESULT = 1
    		EXIT
    	ENDIF
    もしn が0ならば1を返して終了。
  3. 7-11行目
    UWSC
    	IFB n <= 2 THEN
    		RESULT = n
    	ELSE
    		RESULT = n * factDouble(n - 2)
    	ENDIF
    もしnが2以下ならばnを返す。そうでなければ、n×(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\]

関連記事

fact関数 (自作関数)
引数に指定した数値の階乗を求めます。
GCD関数 (自作関数)
最大公約数を求めます。
ABS関数 (スクリプト関数)
引数の絶対値を求めます。
ARCCOS関数 (スクリプト関数)
引数の逆余弦を求めます。
CEIL関数 (スクリプト関数)
正の方向へ切り上げた数値を返します。
LN関数 (スクリプト関数)
自然対数を求めます。
LOGN関数 (スクリプト関数)
常用対数を求めます。
ZCUT関数 (スクリプト関数)
マイナス値を0にして返します。プラス値はそのままの値を返します。
isOdd関数 (自作関数)
奇数かどうか調べます。
radToDeg関数 (自作関数)
弧度法から度数法に変換します。