再帰
Recursion/さいき
ひとことで言うと
処理の途中で自分自身を呼び出して、同じ作業をだんだん小さくしながら片づける書き方です。
📖 もうちょい詳しく
何が新しいの?
再帰は、ある処理(関数)が、その処理の中でもう一度自分自身を呼び出す書き方のことです。
新しい技術ではなく、プログラミングの基本的な考え方のひとつです。「大きな問題を、同じ形の小さな問題に分けてくり返し解く」とラクになる場面が多いので、昔から広く使われています。
どうやって動いてるの?
再帰では「自分を呼ぶこと」と「もう呼ばないで止まること」の2つをセットで決めます。
この「もう呼ばないで止まる」ところを終了条件(ベースケース)と呼びます。問題を少しずつ小さくして、いちばん小さくなったら止める、という流れです。終了条件を書き忘れると、自分を呼び続けて止まらなくなってしまうことがあります。
何ができるの?
フォルダの中のフォルダをぜんぶたどる、といった「入れ子になったもの」を扱うのが得意です。
ほかにも、数を1つずつ減らしながら合計を出す計算や、枝分かれしていくデータをたどる場面で使われます。ループ(くり返し)でも書けますが、再帰のほうが見た目がすっきりすることがあります。
🌱 身近なたとえ
合わせ鏡で例えると分かりやすいです。
向かい合った鏡に自分が映り、その中にまた小さな自分が映り、さらにその中に……と続いていきますよね。再帰も同じで、「同じ形の処理」が一回り小さくなりながら中に続いていきます。鏡なら部屋の端で映り終わるように、再帰も「ここで止まる」という地点を決めておくのが大切です。
✅ まず覚えるポイント
- 再帰は「処理が自分自身を呼び出す」書き方です
- 「自分を呼ぶ」と「止まる条件」を必ずセットにします
- 止まる条件を終了条件(ベースケース)と呼びます
- 問題を少しずつ小さくしていくのがコツです
- 入れ子・枝分かれしたデータと相性が良いです
- 止まる条件を忘れると処理が終わらなくなります
🧭 よくある勘違い
再帰は無限に続くものなの?
いいえ、ちゃんと止まるように作ります。
「自分を呼び続ける」と聞くと終わらない印象を受けますが、毎回ほんの少し問題を小さくして、いちばん小さくなったら止めます。止まらないのは、終了条件を書き忘れたときに起きる失敗です。
ループと何が違うの?
やりたいことは似ていて、どちらも「くり返し」を表します。
ループは「同じ場所をぐるぐる回る」イメージ、再帰は「同じ形の処理が中に続く」イメージです。多くの場合どちらでも書けるので、扱うデータの形に合わせて読みやすいほうを選びます。
🧩 関連して覚えると楽な言葉
- 関数: 入力を受け取り、決まった処理をして結果を返すひとまとまり。再帰はこの関数が自分を呼ぶ書き方です
- アルゴリズム: 問題を解くための手順。再帰はその手順を組み立てる方法のひとつです
- ループ: 同じ処理をくり返す書き方。再帰とよく似た役割を持ちます
- 木構造: 枝分かれして広がるデータの形。再帰でたどるのが得意な相手です
🏁 ひとことでまとめ
再帰は、ひとつの処理が自分をもう一度呼んで、同じ作業を少しずつ小さくしながら片づけていくやり方です。
「自分を呼ぶ」と「ここで止まる」をセットで決めておくのがコツです。
TERM SEARCH
ほかの用語を調べる
検索ボックスを準備中…