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\]

関連記事

GCD (自作関数)
最大公約数 を求めます。
fact (自作関数)
引数に指定した数値の 階乗 を求めます。
ABS (スクリプト関数)
引数の絶対値(\(|x|\))を返します。
ARCCOS (スクリプト関数)
引数の 逆余弦 を求めます。
CEIL (スクリプト関数)
正の値へ切り上げた数値を返します。
LN (スクリプト関数)
自然対数(\(\log_e{x}\))を求める。
LOGN (スクリプト関数)
Baseを底とするXの対数(\(\log_{Base}{x}\))を求める。
ZCUT (スクリプト関数)
マイナス値は0にして返します。
isEven (自作関数)
偶数かどうかを調べます。
isOdd (自作関数)
奇数かどうか調べます。
radToDeg (自作関数)
弧度法 から 度数法 に変換します。
ARCSIN (スクリプト関数)
引数の 逆正弦 を求めます。
EXP (スクリプト関数)
自然指数関数(\(y=e^{x}\))を求める。
degToRad (自作関数)
度数法 から 弧度法 に変換します。
LCM (自作関数)
最小公倍数 を求めます。
binToDec (自作関数)
2進数を10進数に変換します。負数・小数の値にも対応しています。
binToHex (自作関数)
2進数を16進数に変換します。負数・小数の値にも対応しています。
ARCTAN (スクリプト関数)
引数の 逆正接 を求めます。
INT (スクリプト関数)
小数点以下を切り落とした数値を返します。
POWER (スクリプト関数)
数値のべき乗(\(\small{Base}^{Exponent}\))を求めます。
hexToBin (自作関数)
16進数を2進数に変換します。負数・小数の値にも対応しています。
isPrime (自作関数)
指定した数値が 素数 かどうかを調べます。
normalizeAngle (自作関数)
度単位の角度を0~360度に正規化します。
divisors (自作関数)
引数に指定した数値の約数のリストを返します。
RANDOM (スクリプト関数)
ランダムな値を返します。
ROUND (スクリプト関数)
指定した位置で偶数丸めした値を返します。
SQRT (スクリプト関数)
平方根(\(\sqrt{x}\))を求める。
digitSum (自作関数)
数値の各桁の和を返す
Collatz (自作関数)
コラッツ数列 を求め結果を配列で返します。
Kaprekar (自作関数)
カプレカ数 を求め結果を配列で返します。
deleteEmptyFolders (自作関数)
指定したフォルダより下層にある空フォルダを削除します。
hexToDec (自作関数)
16進数を10進数に変換します。負数・小数の値にも対応しています。
decToHex (自作関数)
10進数を16進数に変換します。負数・小数の値にも対応しています。
decToBin (自作関数)
10進数を2進数に変換します。負数・小数の値にも対応しています。
ARABIC (自作関数)
ローマ数字 を アラビア数字 に変換します。
ROMAN (自作関数)
アラビア数字 を ローマ数字 に変換します。
timeValue (自作関数)
指定した時間の シリアル値 を求める。