4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mind8で十進数計算(階乗計算)

Last updated at Posted at 2024-05-03

## 階乗を計算
リカーシブコールと単なる繰り返し構文の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ミリ秒経過

なぜか、リカーシブが圧倒的に高速のようです。

4
1
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?