【さいき】
再帰 とは?
最終更新:
💡 鏡の中にまた鏡がある「自分自身を呼ぶ」仕組み
関数が自分自身を呼び出すプログラミング手法。木構造の探索やフィボナッチ数列など、繰り返し構造を簡潔に表現できる。
📌 このページのポイント
- 関数の中で同じ関数を呼び出すことで、繰り返し処理を実現する
- 処理を終えるには終了条件と、そこへ近づく呼び出しが必要
- 通常は呼び出しにスタックを使い、深すぎるとエラーやスタックオーバーフローの原因になる
- ループで書けるものは大抵再帰でも書けるが、木構造の処理では再帰が自然
再帰って何が便利なの?
うーん、でも自分を呼び続けたら止まらなくなりそう
処理を終えるには「ベースケース(終了条件)」を決めて、呼ぶたびにそこへ近づけるんだ。例えば0以上の整数の階乗なら、nが0か1で1を返し、それ以外はn−1の階乗を呼ぶよ。終了条件があっても、そこへ近づかなければ止まらないね。
スタックオーバーフローって何?
末尾再帰最適化って何が違うの?
再帰呼び出しの後に計算が残らない「末尾」の形なら、処理系によっては呼び出し元の領域を再利用できるよ。ただし対応は言語や処理系による。深い再帰を安全に扱いたいときは、対応を確認したりループへ書き直したりするんだ。
まとめ:ざっくりこれだけ覚えればOK!
再帰って出てきたら「関数が自分自身を呼んで繰り返す」と思えばだいたいOK!
📖 おまけ:英語の意味
「Recursion」 = 再帰・繰り返し戻ること
💬 Recursionは「再帰」を表す英語で、プログラミングでは自分自身を呼ぶ仕組みを指すよ。