necotech blog

検索って再帰

再帰構造がよく分からない人は、普段自分がしているGoogle検索を思い浮かべれば、理解の手助けになる気がする。検索というプロセスは再帰構造になることがある。どういうことかというと、特に技術的な用語などを調べる時、下のような手順を辿ることが多々あるからである。

  1. Aという用語の意味を調べる
  2. Aの説明に、BCという知らない用語がある
  3. Bという用語の意味を調べる
  4. Bを理解して、Aの説明に戻る
  5. Cという用語の意味を調べる
  6. Cを理解して、Aの説明に戻る
  7. Aの意味を理解する

BCから、さらに知らない用語が出てきた場合も同様、その用語を理解した上でBCを理解する流れとなる。つまり、検索するという手順の途中で、さらに検索する手順が出てくる。

実際のプログラミングでも、例えばクローラなども上記と同様に、「リンクを辿る」という手順が再帰構造になることもある。下記の例では、ページを取得し、データベースへ保存するという処理の途中で、同じ処理が呼ばれることになる。(実際のクローラの多くはこんな流れではないだろうけど、用途と要件によってはこういった再帰構造になり得る、という例です。)

  1. Aというページを取得する
  2. A上に存在する、BCへのハイパーリンクを取得する
  3. Bを取得し、データベースへ保存する
  4. Cを取得し、データベースへ保存する
  5. BCと関連付けて、Aをデータベースへ保存する

リスト処理や数値計算過程で出てくるような再帰は、また頭の使い方が違ったり、慣れないと難しい部分もあるので参考になるか分からないけど、取っ掛かりとしてこんな身近にも存在しているよ、という話。

Facebook にシェア
LinkedIn にシェア
Pocket