## 階乗を計算
リカーシブコールと単なる繰り返し構文の2とおりで、100!を計算してみました。
※タイトル 多倍長整数や小数をmind独自で定義し計算する。
"lnum-sub01S"を コンパイルする。
"lnum-sub02S"を コンパイルする。
"lnum-sub03"を コンパイルする。
階乗数は L小数型S 長さ 300。
階乗とは (整数 → L整数) ※リカーシブコール
乗数Wは 変数
乗数Wに 入れる
乗数Wが 1と 等しい
ならば "1"を 返し 終わり
さもなければ
乗数Wから 一つ引いた 階乗を
乗数Wを L整数と整数の掛け算結果Sを 返す
つぎに。
メインは ( ・ --> ・ )
計時開始
"100!="を 表示し 100の 階乗を 表示する 改行する
経過時間を 文字列変換し 表示し 「ミリ秒経過」と 表示する 改行する
計時開始
"1"を 階乗数に 入れる
100 回数指定し
階乗数と 回数を L整数と整数の掛け算結果Sを 階乗数に 入れる
繰り返す
"100!="を 表示し 階乗数を 表示する 改行する
経過時間を 文字列変換し 表示し 「ミリ秒経過」と 表示する。
実行結果
c:\mind8\pmind\sample>kaijo
100!=+93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
0ミリ秒経過
100!=+93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
15ミリ秒経過
なぜか、リカーシブが圧倒的に高速のようです。