factファクト関数

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

引数に指定した自然数の階乗を求めます。再帰関数。二重階乗を求めるにはfactDouble関数 (自作関数)を使います。

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

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   数値 : 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

解説

  1. 2行目
    UWSC
    	IF n <> ABS(INT(n)) THEN EXIT
    nが0以上の整数でなければ終了
  2. 3行目
    UWSC
    	IFB n = 0 OR n = 1 THEN
    もしxが0か1ならば4行目>>>、そうでなければ6行目>>>
  3. 4行目
    UWSC
    		RESULT = 1
    戻り値として1を返す。
  4. 6行目
    UWSC
    		RESULT = n * fact(n - 1)
    n×(n-1)の階乗を返す。再帰呼び出し。

階乗

\(n\)の階乗\(n!\)は、1から\(n\)までのすべての整数の積を言います。例えば5の階乗の場合、

\[5! = 5 \times 4 \times 3 \times 2 \times 1 = 120\]

となります。

定義

  1. \[n! = \prod_{k=1}^{n}k = n \times (n-1) \times \cdots \times 3 \times 2 \times 1\]
  2. 再帰的な定義 \[ \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} \]
  3. \[0! = 1\]

プログラムは\(n=1\)になるまで、再帰呼び出しで計算しています。

使い方

5の階乗を求める

UWSC
PRINT fact(5)
結果
プレーンテキスト
120

関連記事

factDouble関数 (自作関数)
引数に指定した数値の二重階乗を求めます。
GCD関数 (自作関数)
最大公約数を求めます。
ABS関数 (スクリプト関数)
引数の絶対値を求めます。
ARCCOS関数 (スクリプト関数)
引数の逆余弦を求めます。
CEIL関数 (スクリプト関数)
正の方向へ切り上げた数値を返します。
LN関数 (スクリプト関数)
自然対数を求めます。
LOGN関数 (スクリプト関数)
常用対数を求めます。
ZCUT関数 (スクリプト関数)
マイナス値を0にして返します。プラス値はそのままの値を返します。
isOdd関数 (自作関数)
引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
radToDeg関数 (自作関数)
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。