特徴 再帰関数 関数内関数
メリット
設計 自然な表現で階層構造を処理できる 外部からのアクセスを制限し、カプセル化が可能
可読性 階層的なデータ構造の探索が直感的 親関数の変数とリソースを共有しやすい
柔軟性 同じロジックを複数の場所で再利用可能 関数の中で別の関数を定義することで、ロジックを整理
デメリット
実行速度 深い階層がある場合、スタックオーバーフローのリスク
複雑性 間違った実装では無限ループのリスク 関数が長くなると可読性が低下する可能性
メモリ使用 関数呼び出しのたびに新しいスタックフレームが必要

再帰関数

関数内関数

どちらの手法を選択するかは、対象となる問題とプロジェクトの要件に応じて検討するとよいでしょう。

再帰関数の利用基準

1. 階層構造の探索

2. 問題の分割

3. コードの再利用

4. 深い階層の制限

関数内関数の利用基準

1. カプセル化と情報隠蔽