再帰不能?

  • 投稿日:
  • by
  • カテゴリ:

性懲りもなく、Squeakをいじりつづけています(^^;

簡単にプログラムができますが、ちょっと凝ったことをしようとすると、なかなかに
これが難しかったりもします。

例えば、再帰(recursive)を使ったプログラムを書こうとしたら、Squeakでは、
ブロックを再帰的に呼び出すことはできないらしいです。
じゃあ、再帰はできないのかというとそうでもないです。

あちこちめぐってサンプルをあれこれ見ているうちに、フィボナッチや階乗計算
をするものを見つけたのでそれを倣って、書いてみました。コレ

再帰を実装するには、スタックを擬似的に(?)実装してやればいいのです。
そのために、「入れ物」という部品(中身は集合)を持ってきて、そこに、
ドラゴン曲線の描画に必要な情報を詰め込んだオブジェクト(ここでは
ピンク色の四角)をコピーして詰め込んでいきます。

あとは、手続き dragon がこれを上から順に手繰って、中身を参照しつつ
作業するだけです。

現在の計算機の仕組みに迫るような実相方法ですね。
計算機の仕組みを理解する一助になるかもしれません。
……なんて(^^;