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 &lt;= 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\]

Was this post helpful?

関連記事

fact
引数に指定した自然数の階乗を求めます。再帰関数。二重階乗を求めるにはfactDouble関数を使います。
isEven
引数に指定した数値が偶数かどうかを調べます。偶数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
isOdd
引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
radToDeg
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
degToRad
度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
Collatz
コラッツ数列を求め結果を配列で返します。
Kaprekar
カプレカ数を求め結果を配列で返します。
ARABIC
ARABIC関数は、ローマ数字をアラビア数字に変換する関数です。アラビア数字をローマ数字に変換するには、ROMAN関数を使います。
ROMAN
ROMAN関数は、アラビア数字をローマ数字に変換する関数です。ローマ数字をアラビア数字に変換するには、ARABIC関数を使います。
ABS
引数の絶対値を求めます。
GCD
GCD関数は、引数に指定した配列の最大公約数(Greatest Common Measure)を求める関数です。最小公倍数を求めるには、LCM関数を使います。
ARCCOS
引数の逆余弦を求めます。
ARCSIN
引数の逆正弦を求めます。
LCM
LCM関数は、引数に指定した配列の最小公倍数(Least Common Multiple)を求める関数です。最大公約数を求めるには、GMD関数を使います。
ARCTAN
引数の逆正接を求めます。
CEIL
正の方向へ切り上げた数値を返します。
hexToDec
16進数を10進数に変換します。10進数を16進数に変換するにはdecToHex関数を使います。
decToHex
10進数を16進数に変換します。16進数を10進数に変換するにはhexToDec関数を使います。
binToDec
2進数を10進数に変換します。10進数を2進数に変換するにはdecToBin関数を使います。
binToHex
2進数を16進数に変換します。16進数を2進数に変換するにはhexToBin関数を使います。
digitSum
引数に指定した数字和(数値の各桁を足した結果)を返します。正の整数以外を指定した場合は、エラー値を返します。
hexToBin
16進数を2進数に変換します。2進数を16進数に変換するにはbinToHex関数を使います。
EXP
自然指数関数を求めます。
decToBin
10進数を2進数に変換します。2進数を10進数に変換するにはbinToDec関数を使います。
isPrime
引数に指定した数値が素数かどうかを調べます。素数の場合True、素数でない場合Falseを返します。
divisors
引数に指定した数値の約数をリストを配列で返します。
INT
小数点以下を切り捨てた値を返します。負の値の場合、正の値のようにより小さい値にではなく0に近い側に切り捨てされます。
LN
自然対数を求めます。
LOGN
常用対数を求めます。
normalizeAngle
度単位の角度を0~360度に正規化します。
POWER
数値のべき乗を求めます。
RANDOM
RANDOM関数は、0以上Range未満の範囲にある乱数(整数)を返します。引数を省略した場合は、0以上1未満の乱数(小数点以下15桁)を返します。
ROUND
指定した位置で偶数丸めした値を返します。四捨五入する場合は、roundOff関数を使います。
SQRT
引数の平方根を求めます。累乗根はPOWER関数を使います。
ZCUT
マイナス値を0にして返します。プラス値はそのままの値を返します。