再帰 単語


ニコニコ動画で再帰の動画を見に行く

サイキ

1.0千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

再帰とは、 ある対xの定義の中にxが登場するような物を言う。
→ 再帰

数学における再帰

以下のようなフィボナッチ数列定義は再帰的な定義と言える。

  • a1 = a2 = 1
  • an+2 = an+1 + an

再帰的でない定義(一般解)は以下のような形になる。

この例から分かるように、再帰的定義を用いると、そうでない定義よりも直感的な定義をすることが可になる場合がある。

プログラミングにおける再帰

プログラミングにおいて再帰は、関数や、データ定義する際に用いられる事が多い。

再帰関数

ある関数fの定義内にfの呼び出しが含まれるような関数のことを言う。関数型言語では多用される手法である。クイックソートアルゴリズムは、再帰を用いて書くとすっきりと書くことができる。

例: nの階乗を求めるプログラム(C言語)

fact定義内にfactが登場しているので再帰的な関数定義となっている。

int fact(int n) {
if(n <= 1)
return 1;
else
return n * fact(n-1);
}

再帰的データ型

あるデータAの定義内にAを含むようなのことを言う。リストや、木は再帰的データの一例である。

例: 二分木構造 (OCaml)

'a treeの定義内に'a treeが登場しているので再帰的な定義となっている。

type 'a tree = Leef | Branch of 'a * 'a tree * 'a tree;;

再帰的解法

ハノイの塔
T1 T2 T3
ハノイの塔a ハノイの塔b ハノイの塔c

再帰的な手法を使い、問題を解く手順である。有名なものにハノイの塔がある。図でn個のブロックを他のに移動するのだが、このとき「ブロックは三本ののうちどれかに置ける」「ブロックはひとつずつしか動かせない」「小さいブロックの上に大きなブロックを乗せてはならない」と言う制約条件がある。

これは再帰的に考えれば簡単である。つまり、n個(n>1)のブロックをTxからTyに動かしたいのならn-1個のブロックをTxからT(6-x-y)に動かし、n番ブロックTxからTyに動かし、n-1個のブロックを改めてT(6-x-y)からTyに動かすのである。n=1なら普通に1回で動かせる。

つまり、n個のブロックを動かす手順数はn>1なら「n-1個のブロックを動かす手順数*2+1回」であり、n=1なら1回の手順が必要なので一般にn個動かすには2n-1回の手順が必要になることになる。

関連項目

この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
MikuMikuDance[単語]

提供: ななし

もっと見る

急上昇ワード改

最終更新:2025/06/15(日) 04:00

ほめられた記事

最終更新:2025/06/15(日) 04:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP