AI活用の教科書
バックエンド開発ふつう3分で読了

再帰

Recursionさいき

ひとことで言うと

処理の途中で自分自身を呼び出して、同じ作業をだんだん小さくしながら片づける書き方です。

📖 もうちょい詳しく

何が新しいの?

再帰は、ある処理(関数)が、その処理の中でもう一度自分自身を呼び出す書き方のことです。
新しい技術ではなく、プログラミングの基本的な考え方のひとつです。「大きな問題を、同じ形の小さな問題に分けてくり返し解く」とラクになる場面が多いので、昔から広く使われています。

どうやって動いてるの?

再帰では「自分を呼ぶこと」と「もう呼ばないで止まること」の2つをセットで決めます。
この「もう呼ばないで止まる」ところを終了条件(ベースケース)と呼びます。問題を少しずつ小さくして、いちばん小さくなったら止める、という流れです。終了条件を書き忘れると、自分を呼び続けて止まらなくなってしまうことがあります。

何ができるの?

フォルダの中のフォルダをぜんぶたどる、といった「入れ子になったもの」を扱うのが得意です。
ほかにも、数を1つずつ減らしながら合計を出す計算や、枝分かれしていくデータをたどる場面で使われます。ループ(くり返し)でも書けますが、再帰のほうが見た目がすっきりすることがあります。

🌱 身近なたとえ

合わせ鏡で例えると分かりやすいです。
向かい合った鏡に自分が映り、その中にまた小さな自分が映り、さらにその中に……と続いていきますよね。再帰も同じで、「同じ形の処理」が一回り小さくなりながら中に続いていきます。鏡なら部屋の端で映り終わるように、再帰も「ここで止まる」という地点を決めておくのが大切です。

✅ まず覚えるポイント

  • 再帰は「処理が自分自身を呼び出す」書き方です
  • 「自分を呼ぶ」と「止まる条件」を必ずセットにします
  • 止まる条件を終了条件(ベースケース)と呼びます
  • 問題を少しずつ小さくしていくのがコツです
  • 入れ子・枝分かれしたデータと相性が良いです
  • 止まる条件を忘れると処理が終わらなくなります

🧭 よくある勘違い

再帰は無限に続くものなの?

いいえ、ちゃんと止まるように作ります。
「自分を呼び続ける」と聞くと終わらない印象を受けますが、毎回ほんの少し問題を小さくして、いちばん小さくなったら止めます。止まらないのは、終了条件を書き忘れたときに起きる失敗です。

ループと何が違うの?

やりたいことは似ていて、どちらも「くり返し」を表します。
ループは「同じ場所をぐるぐる回る」イメージ、再帰は「同じ形の処理が中に続く」イメージです。多くの場合どちらでも書けるので、扱うデータの形に合わせて読みやすいほうを選びます。

🧩 関連して覚えると楽な言葉

  • 関数: 入力を受け取り、決まった処理をして結果を返すひとまとまり。再帰はこの関数が自分を呼ぶ書き方です
  • アルゴリズム: 問題を解くための手順。再帰はその手順を組み立てる方法のひとつです
  • ループ: 同じ処理をくり返す書き方。再帰とよく似た役割を持ちます
  • 木構造: 枝分かれして広がるデータの形。再帰でたどるのが得意な相手です

🏁 ひとことでまとめ

再帰は、ひとつの処理が自分をもう一度呼んで、同じ作業を少しずつ小さくしながら片づけていくやり方です。
「自分を呼ぶ」と「ここで止まる」をセットで決めておくのがコツです。