再帰
-
1
ななしのよっしん
2008/08/13(水) 20:17:10 ID: MVaoq+N/Fo
- 何を今更アンサイクロネタ…?
-
👍0高評価👎0低評価
-
2
ななしのよっしん
2008/08/13(水) 20:37:59 ID: 5g6ivyfssU
- 無限ループともかぶってるしこれはどうかと思う
-
👍0高評価👎0低評価
-
3
yamashita
2008/08/13(水) 20:47:38 ID: aRrTn8DHRC
-
編集した物です。
>>2
無限ループ・・・同じ処理を繰り返すこと
再帰・・・自分自身を参照/呼び出すこと
私は、逆に無限ループの方が、意味合いが違うんじゃないかと思っています。 -
👍0高評価👎0低評価
-
4
park
◆YuyukoyyA6 2008/08/16(土) 14:03:24 ID: Xx+HLcYR5T
-
ループも再帰も本質は同じなのでは?
再帰にはスタックの問題もありますが。 -
👍0高評価👎0低評価
-
5
ななしのよっしん
2008/08/16(土) 23:27:52 ID: WhuoWnLYR1
-
再帰にはループと違って「深さ」の概念があるから
ツリー構造をくまなくたどりたいときには
欠かせない処理だったりする -
👍0高評価👎0低評価
-
6
park
◆YuyukoyyA6 2008/08/17(日) 01:04:39 ID: Xx+HLcYR5T
-
>>5
スタックを自分で用意すればループでもできませんか? -
👍0高評価👎0低評価
-
7
ななしのよっしん
2008/08/18(月) 08:59:47 ID: 6M7pYk/Rv/
-
>>4-6
ループと再帰で実現できることは変わらないし、末尾再帰なんかはループに変換されたりするけど、両者の本質は違う物なんじゃないかな。抽象的な意味合いが異なると思う。
同じ事が出来るからといって、両者が同じになるとは限らないし、それを言うならチューリング完全な言語は全部本質的には同じ、ということになってしまいますよね。 -
👍0高評価👎0低評価
-
8
ななしのよっしん
2009/08/09(日) 16:21:39 ID: dN5dnRPbLj
- 再帰リンク付けることを考えた人に、俺は称賛を贈りたい
-
👍0高評価👎0低評価
-
9
ななしのよっしん
2009/09/20(日) 14:02:21 ID: swf5ulRays
-
再帰って、一般化した式を見ると途端に訳が分からなくなる。階乗ですら
苦手な俺が再帰に慣れるにはどうすればいいんだ… -
👍0高評価👎0低評価
-
10
ななしのよっしん
2010/08/24(火) 21:39:48 ID: DHCduJQROG
- 存在についての定義とかかな。
-
👍0高評価👎0低評価
-
11
ななしのよっしん
2012/02/11(土) 20:28:48 ID: 08xHgSY3VB
-
探索ではいつもお世話になってる
ループでも理論上実装可能かもしれんが、やっぱり再帰のほうがスマートな場面って多いよな -
👍0高評価👎0低評価
-
12
ななしのよっしん
2012/12/01(土) 00:34:36 ID: ZPKiX6fhSQ
-
再帰使うほうが
「ああオレ今プログラミングしてるんだなぁ」
というふいんきに浸れる
-
👍0高評価👎0低評価
-
13
ななしのよっしん
2012/12/30(日) 17:28:32 ID: 4jTat5WMYC
-
ニコニコ動画でも
「移動します」を上手く使えば
再帰を再現できそうな
希ガス -
👍0高評価👎0低評価
-
14
ななしのよっしん
2013/04/04(木) 00:51:13 ID: +vMuPTD2Kd
-
フィボナッチ数列やクイックソートの用語を持ち出してそれで説明するのかと思いきや、階乗のコード例しか示さないのはどうなのかと・・・ちょっと拍子抜けッス
あと、再帰呼び出しのコードは直感的な表記かもしれないけど、メモリ枯渇の危険性や処理速度の点では初心者にはオススメできないと思う(概念的な理解は別として)
末尾再帰が最適化されるSchemeみたいな言語でもその言語仕様に合わせたコードを書くスキルが要るし、あとC言語とか再帰的な型宣言はできない言語も多いでしょ(Haskellとかは大丈夫だけど)
-
👍0高評価👎0低評価
-
15
ななしのよっしん
2013/05/16(木) 23:33:27 ID: FP4YbFsLU1
- googleでこの言葉を検索すると…?
-
👍0高評価👎0低評価
-
16
ななしのよっしん
2013/06/20(木) 20:57:53 ID: YXDPATj/ct
-
これも再帰
タイトル:ハノイの塔
-
17
ななしのよっしん
2013/06/20(木) 21:01:14 ID: YXDPATj/ct
-
空
タイトル:ハノイの塔この絵を基にしています!
-
18
ななしのよっしん
2013/09/07(土) 22:32:28 ID: Icu2L20gjn
- レイシスト入店おことわり
-
👍0高評価👎0低評価
-
19
ななしのよっしん
2014/02/15(土) 14:55:16 ID: XlVUMdqJtT
-
自己言及のパラドックスはこれに近いものだと思う
というより明確な区別が分からん
関連項目に入れてもいいのではないだろうか -
👍0高評価👎0低評価
-
20
ななしのよっしん
2014/08/10(日) 05:58:27 ID: z1sr7zxxHH
-
>>15
……google先生って、お茶目ですねえ(笑)
再帰的処理っていうのはかなり本質から外れた概念で、
元々あったのは「再帰的定義」とか「再帰的アルゴリズム」なのね(概念自体は電算機ができる前から普通にあった)
宣言型言語では必然的に出てくるので、言語仕様レベルで親和性を持たせるようにしてる。
Cとかの手続き型言語でこれをやるのは、ぶっちゃけ邪道。しこしこforループに変換するのが手続き型言語の本来あるべき姿 -
👍0高評価👎0低評価
-
21
ななしのよっしん
2015/07/18(土) 16:45:53 ID: 0wG5IHxD9Z
- 再帰的でないものはプログラミングできないのならすべてのプログラムは再帰で表せる・・・?
-
👍0高評価👎0低評価
-
22
ななしのよっしん
2016/04/24(日) 13:14:54 ID: +uIYsH4hqK
-
階乗って再帰の説明で必ずと言っていいほど見かけるけど、
forループを使う方がわかりやすくて再帰のありがたみを感じない・・・ -
👍0高評価👎0低評価
-
23
ななしのよっしん
2017/04/30(日) 01:52:03 ID: pmNjB3uhju
-
ぷよぷよとかマインスイーパーとかの盤面の消去判定でうまく活用できる
同じ条件を満たす限り自動で繰り返すのが重要
階乗の繰り返し数nをいちいち求め用意する必要がない
あるいはnに相当するものを求めるのが困難な場合に有効 -
👍0高評価👎0低評価
-
24
ななしのよっしん
2017/10/22(日) 00:15:33 ID: f+5O+t2nD3
-
1番目の素数を2とすると、
2番目の素数は3となり、
3番目の素数は5となり、
5番目の素数は11となり、
11番目の素数は31となり、
31番目の素数は127となり、
127番目の素数は709となり、
709番目の素数は5381となり、
5381番目の素数は52711となり、
52711番目の素数は648391となり、・・・ -
👍0高評価👎0低評価
-
25
ななしのよっしん
2017/12/07(木) 10:24:54 ID: X2Dn9hE4jU
-
>>21
包含関係を勉強するといい
再帰的な振る舞いをする処理はプログラムに含まれているが、プログラム自体が再帰的なわけじゃない
わざわざ再帰的な表現にするのは直感的にわかりやすくなるメリットがあるわけで、そうでもないなら本末転倒も甚だしい
いずれにせよCだったらfor文使ったほうが読みやすくてスマートだわ -
👍0高評価👎0低評価
-
26
ななしのよっしん
2018/02/09(金) 00:35:41 ID: SRCS0+jJ6+
- 代表的なのはクイックソートだな。ループでも書けるが考え方としては不自然になる。
-
👍0高評価👎0低評価
-
27
ななしのよっしん
2018/02/24(土) 22:38:58 ID: RIZcKPLppZ
-
あんまり何も考えずに使うと計算がすごい時間かかるときもあるんよね
確かフィボナッチ数列を愚直に再帰で求めるプログラムの例とかすごい時間かかるっての見たことある
でも、末尾再帰の最適化とかで計算が増えるのを防げる場合もある。 -
👍0高評価👎0低評価
-
28
ななしのよっしん
2018/12/27(木) 00:49:17 ID: brUYitsHqM
- >>18 差別主義者差別で草
-
👍0高評価👎0低評価
-
29
ななしのよっしん
2019/02/21(木) 22:52:43 ID: bf8DLXL5Sj
-
再帰が実用的に有効な場合ってほとんど無くない?
何かあったら誰か教えてください -
👍0高評価👎0低評価
-
30
ななしのよっしん
2019/09/20(金) 01:06:28 ID: CWgXWlqKb0
-
というより一般的には使うところがあまりないかな
コンパイラー書くなら使うけど、コンパイラー書くってのは普通はやらないもんね -
👍0高評価👎0低評価