5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mindで「たらい回し関数(竹内関数)」と等価な関数

Last updated at Posted at 2025-03-21

「たらい回し関数(竹内関数)」と等価な関数

リカーシブコールを使わずに「たらい回し関数(竹内関数)」と等価な働きをする関数を日本語プログラミング言語Mind8 で実装し実行しました。
次回は、2つの関数が「等価」であることを証明します。

tarai3.src
たらい回しと等価な関数とは
      xは  変数
      yは  変数
      zは  変数
      xと  yと  zに  入れ      
      xが  y  以下  
          ならば  yを  返し
     さもなければ
                  yが z 以下
           ならば  zを 返し
           さもなければ
                xを 返す
           つぎに
      つぎに。

呼び出し回数は 変数。
たらい回しとは
      xは  変数
      yは  変数
      zは  変数
      xと  yと  zに  入れ
   呼び出し回数を 一つ増加し     
      xが  y  以下  
            ならば  yを  返し
      さもなければ
                  [x - 1]と  yと  zを  たらい回し
          [y - 1]と  zと  xを  たらい回し
          [z - 1]と  xと  yを  たらい回し
          たらい回しし  返す
      つぎに。

メインは 
   ixは 変数
   iyは 変数
      izは 変数
		起動引数個数が 3と 等しい
      ならば
         呼び出し回数を クリアし
  		    起動引数(1)を 数値変換し 捨て ixに 入れる
	 	    起動引数(2)を 数値変換し 捨て iyに 入れる
 		    起動引数(3)を 数値変換し 捨て izに 入れる

              「たらい回しと等価な関数を開始します。」と 表示し 
        ixと iyと izの たらい回しと等価な関数を 数値表示し 「です。」と 表示し 改行する

    「竹内先生のたらい回し関数開始します。」と 表示し
        ixと iyと izを たらい回し  数値表示し 「です。」と 表示し 
		呼び出し回数を 数値表示し 「回呼び出し」と 表示し 改行する		
            さもなければ
         「起動引数個数は3個です。」と 表示し 改行する
      つぎに。

実行結果

c:\mind8\pmind\lesson>tarai3 10 5 0
たらい回しと等価な関数を開始します。10です。
竹内先生のたらい回し関数開始します。10です。343073回呼び出し

c:\mind8\pmind\lesson>tarai3 12 6 0
たらい回しと等価な関数を開始します。12です。
竹内先生のたらい回し関数開始します。12です。12604861回呼び出し

c:\mind8\pmind\lesson>tarai3 14 7 0
たらい回しと等価な関数を開始します。14です。
竹内先生のたらい回し関数開始します。14です。588802013回呼び出し
5
2
1

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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?