お疲れ様です。Y研究員です。8月も下旬になってきました。夏休みの宿題もそろそろ終わらせたい?着手したい?時期ですね。
しぶとく続けている古典な教科書の『写経』の続きです。古い教科書なので古い教育プログラミング言語、Pascalの方言が使われています。ChatGPT-4を使ってC言語に変換して、それを『写経』しています。Pythonでもできると思います。自分で自分を呼び出す再帰の章を終えたので、分かった事をまとめます
デバッグが難しい
現代ではあまり推奨されていない
再帰で解くべき問題がある
1はバグを仕込むとかなり怪しい挙動をするので、デバッグが難しいです。特に終了条件を間違えると延々とリソースを食いつぶしてクラッシュします。またロジックが特殊になるので、想定しない出力も普段とは毛色が違い、慣れが必要と思いました。
現代ではデバッグが難しかったり、簡単にリソースを食いつぶすので推奨されていないという記事を見かけました。Pythonは再帰関数の呼び出し回数を制限しているくらいです。逆に関数型プログラミング言語のHaskelは再帰を重要視していると分かりました。
最後に再帰で解くべき問題についてです。ChatGPT-4に聞いてみたところ、直感的に再帰の方がわかりやすい例が出てきました。フィボナッチ数列やフラクタルの描画は明らかに再帰で解く問題です。迷路や数独を解くプログラムなんかは面白そうです。島を探す課題は画像処理ですね。参考までにChatGPT-4の回答を日本語訳して添付しておきます。
写真は大洗の「島」です。あんこう鍋で有名ですね。寒くなってきたら行きたいです。
それではまた!