見出し画像

古典的書で再帰的プログラムを学ぶ

お疲れ様です。Y研究員です。古典的書でアルゴリズムとデータ構造を勉強しています。

今回は再帰の章を始めたのでその報告です。再帰とは自分自身を呼び出す処理です。関数を作ったら、その関数の中で自分自身を使うわけです。合わせ鏡が例えとして出てきます。

コンピューターの処理は早いのが売りですが、この再帰が使えることも大きな利点です。すこしWikipediaを見たら、読んでいる本の著者Wirthはこの再帰を強力に推していると分かりました。

最初のお題は再帰パターンの描画でした。2つの例があったので、いつもどおりChatGPT-4でC言語に変換して「写経」しました。結果の画像を下に貼ります。

Hilbert curves
Sierpinski curve

どちらも繰り返しパターンです。面白かったのが、ChatGPT-4は線を書くアルゴリズムでバグを出しました。DoubleからIntにキャストしてから、微小な変化を足していく処理をしたので、いつまでたっても値が変わらない不具合です。

そういえば再帰の図形でフラクタルがあったなと思い出したので、ついでにRustでFractal TreeのプログラムをChatGPT-4に書かせてみました。「写経」してみて分かったのですが、何故か前回と同じバグを出しました。今どき、線を書く処理なんて手で書かないので、学習データが薄かったのかもしれません。

Fractal Tree

これで再帰の章の3分の1くらいが終わりました。次はチェス盤の絵が見えました。数字を並び替えるソートの章と比べて、例に力が入っています。改めて著者のWirth氏は再帰が好きなんだなと思いました。

木が出てきたので、木の写真にしました。横浜の三渓園です。自然な木をプログラムで作り出すのは大変だとどこかで読みました。庭の木は形が整えられてはいますが、基本は自然に伸びた形なので、それはまた難しい形だなと思いました。

それではまた。

いいなと思ったら応援しよう!

KY研究所@CoderDojo横浜港北ニュータウンやってます
無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。