(有)未来検索ブラジルが運営するあらゆる言葉についての記事を閲覧・編集したり、コメントをしたりするサイトです。

単語記事: 再帰

編集

再帰とは、 ある対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;;

関連項目

携帯版URL:
http://dic.nicomoba.jp/k/a/%E5%86%8D%E5%B8%B0
ページ番号: 459154 リビジョン番号: 58537
読み:サイキ
初版作成日: 08/08/13 20:13 ◆ 最終更新日: 08/08/16 09:43
編集内容についての説明/コメント: とりあえず詳細な記事。「再帰」は一般用語じゃないから説明が必要だと思う
記事編集 / 編集履歴を閲覧 /

再帰について語るスレ

2 : ななしのよっしん :2008/08/13(水) 20:37:59 ID: 5g6ivyfssU
無限ループともかぶってるしこれはどうかと思う
3 : yamashita :2008/08/13(水) 20:47:38 ID: aRrTn8DHRC
編集した物です。
>>2
無限ループ・・・同じ処理を繰り返すこと
再帰・・・自分自身を参照/呼び出すこと

私は、逆に無限ループの方が、意味合いが違うんじゃないかと思っています。
4 : park ◆YuyukoyyA6 :2008/08/16(土) 14:03:24 ID: Xx+HLcYR5T
ループ再帰も本質は同じなのでは?
再帰にはスタックの問題もありますが。
5 : ななしのよっしん :2008/08/16(土) 23:27:52 ID: WhuoWnLYR1
再帰にはループと違って「深さ」の概念があるから
ツリー構造をくまなくたどりたいときには
欠かせない処理だったりする
6 : park ◆YuyukoyyA6 :2008/08/17(日) 01:04:39 ID: Xx+HLcYR5T
>>5
スタックを自分で用意すればループでもできませんか?
7 : ななしのよっしん :2008/08/18(月) 08:59:47 ID: 6M7pYk/Rv/
>>4-6
ループ再帰で実現できることは変わらないし、末尾再帰なんかはループに変換されたりするけど、両者の本質は違う物なんじゃないかな。抽的な意味合いが異なると思う。
同じ事が出来るからといって、両者が同じになるとは限らないし、それを言うならチューリング完全な言は全部本質的には同じ、ということになってしまいますよね。
8 : ななしのよっしん :2009/08/09(日) 16:21:39 ID: dN5dnRPbLj
再帰リンク付けることを考えた人に、は称賛を贈りたい
9 : ななしのよっしん :2009/09/20(日) 14:02:21 ID: swf5ulRays
再帰って、一般化した式を見ると途端に訳が分からなくなる。階乗ですら
苦手な再帰に慣れるにはどうすればいいんだ…
10 : ななしのよっしん :2010/08/24(火) 21:39:48 ID: DHCduJQROG
存在についての定義とかかな。
11 : ななしのよっしん :2012/02/11(土) 20:28:48 ID: 08xHgSY3VB
探索ではいつもお世話になってる
ループでも理論上実装かもしれんが、やっぱり再帰のほうがスマートな場面って多いよな
ページトップへ戻る