引数に指定した自然数の階乗を求めます。再帰関数。二重階乗を求めるにはfactDouble関数を使います。
- 構文
- Double = fact( 数値 )
- 引数
- 数値
- 0以上の整数
- 戻値
- 引数に指定した数値の階乗。
プログラム
//////////////////////////////////////////////////
// 【引数】
// 数値 : 0以上の整数
// 【戻値】
// 引数に指定した数値の階乗。
//////////////////////////////////////////////////
FUNCTION fact(n)
IF n <> ABS(INT(n)) THEN EXIT
IFB n = 0 OR n = 1 THEN
RESULT = 1
ELSE
RESULT = n * fact(n - 1)
ENDIF
FEND
解説
- 2行目
- 変数nが0以上の整数でなければ終了
IF n <> ABS(INT(n)) THEN EXIT
- 4行目
- 戻り値として1を返す。
RESULT = 1
- 6行目
- 変数n×(n-1)の階乗を返す。再帰呼び出し。
RESULT = n * fact(n - 1)
階乗
\(n\)の階乗\(n!\)は、1から\(n\)までのすべての整数の積を言います。例えば5の階乗の場合、
\[5! = 5 \times 4 \times 3 \times 2 \times 1 = 120\]となります。
定義
- \[n! = \prod_{k=1}^{n}k = n \times (n-1) \times \cdots \times 3 \times 2 \times 1\]
- 再帰的な定義 \[ \begin{eqnarray} n!=\left\{ \begin{array}{ll} 1, &\rm{if}\ n = 0 \\ n \times (n-1)!, &\rm{if}\ n > 0 \end{array} \right. \end{eqnarray} \]
- \[0! = 1\]
プログラムは\(n=1\)になるまで、再帰呼び出しで計算しています。
関連記事
- factDouble
- 引数に指定した自然数の二重階乗を求めます。戻値の型はDouble型です。再帰関数。階乗を求めるにはfact関数を使います。
- ABS (スクリプト関数)
- 引数の絶対値を求めます。
- ARCCOS (スクリプト関数)
- 引数の逆余弦を求めます。
- ARCSIN (スクリプト関数)
- 引数の逆正弦を求めます。
- ARCTAN (スクリプト関数)
- 引数の逆正接を求めます。
- CEIL (スクリプト関数)
- 正の方向へ切り上げた数値を返します。
- EXP (スクリプト関数)
- 自然指数関数を求めます。
- LN (スクリプト関数)
- 自然対数を求めます。
- LOGN (スクリプト関数)
- 常用対数を求めます。
- ZCUT (スクリプト関数)
- マイナス値を0にして返します。プラス値はそのままの値を返します。
- INT (スクリプト関数)
- 小数点以下を切り捨てた値を返します。負の値の場合、正の値のようにより小さい値にではなく0に近い側に切り捨てされます。
- POWER (スクリプト関数)
- 数値のべき乗を求めます。
- RANDOM (スクリプト関数)
- RANDOM関数は、0以上Range未満の範囲にある乱数(整数)を返します。引数を省略した場合は、0以上1未満の乱数(小数点以下15桁)を返します。
- ROUND (スクリプト関数)
- 指定した位置で偶数丸めした値を返します。四捨五入する場合は、roundOff関数を使います。
- isEven
- 引数に指定した数値が偶数かどうかを調べます。偶数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
- isOdd
- 引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
- radToDeg
- 弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
- SQRT (スクリプト関数)
- 引数の平方根を求めます。累乗根はPOWER関数を使います。
- degToRad
- 度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
- GCD
- GCD関数は、引数に指定した配列の最大公約数(Greatest Common Measure)を求める関数です。最小公倍数を求めるには、LCM関数を使います。
- LCM
- LCM関数は、引数に指定した配列の最小公倍数(Least Common Multiple)を求める関数です。最大公約数を求めるには、GMD関数を使います。
- hexToDec
- 16進数を10進数に変換します。10進数を16進数に変換するにはdecToHex関数を使います。
- decToHex
- 10進数を16進数に変換します。16進数を10進数に変換するにはhexToDec関数を使います。
- binToDec
- 2進数を10進数に変換します。10進数を2進数に変換するにはdecToBin関数を使います。
- binToHex
- 2進数を16進数に変換します。16進数を2進数に変換するにはhexToBin関数を使います。
- hexToBin
- 16進数を2進数に変換します。2進数を16進数に変換するにはbinToHex関数を使います。
- decToBin
- 10進数を2進数に変換します。2進数を10進数に変換するにはbinToDec関数を使います。
- isPrime
- 引数に指定した数値が素数かどうかを調べます。素数の場合True、素数でない場合Falseを返します。
- normalizeAngle
- 度単位の角度を0~360度に正規化します。
- divisors
- 引数に指定した数値の約数をリストを配列で返します。
- digitSum
- 引数に指定した数字和(数値の各桁を足した結果)を返します。正の整数以外を指定した場合は、エラー値を返します。
- Collatz
- コラッツ数列を求め結果を配列で返します。
- Kaprekar
- カプレカ数を求め結果を配列で返します。
- ARABIC
- ARABIC関数は、ローマ数字をアラビア数字に変換する関数です。アラビア数字をローマ数字に変換するには、ROMAN関数を使います。
- ROMAN
- ROMAN関数は、アラビア数字をローマ数字に変換する関数です。ローマ数字をアラビア数字に変換するには、ARABIC関数を使います。