再帰とは自分の中で自分自身を呼び出すことです。 この技法を使うとプログラムが簡潔に書ける場合があります。 「萌香」は再帰的な表現と非常に相性がいい言語です。
1 * 2 * 3 * ... * nをしたものをnの階乗といいます。 ループで表記すると
Fact-l.hnk
「階乗 を 「(n) 「((i 1) (x 1)) とし 「(i n <=) の間 (x (x i *) セット) (i (i 1 +) セット) を 繰り返し」 x を 行います」 の 仕事」 と 定義 します」 「「10 階乗」 を 表示」
となるでしょう。
以下の表記も習ったはずです。
fact(1) = 1 fact(n) = n * fact(n - 1) ;n >= 2
これは再帰を使うと
Fact-r.hnk
「階乗 を 「(n) 「もし (n 1 =) ならば 1 (n ((n 1 -) 階乗) *)」 の 仕事」 と 定義 します」 「「10 階乗」 を 表示」
のように書けます。
もう一つFibonacci数を例に挙げます。
Fibonacci数は以下のように定義される数列です。
F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n - 2) ;n >= 2
これを「萌香」で書くと以下のようになります。
Fibonacci.hnk
「なっち を 「(n) 「もし (n 0 =) ならば 0 「もし (n 1 =) ならば 1 「((n 1 -) なっち) と ((n 2 -) なっち) を たす」」」 仕事」 と 定義 します」 「(10 なっち) を 表示」