なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net (914レス)
前次1-
抽出解除 レス栞

422
(6): デフォルトの名無しさん [sage] 2015/12/27(日)17:46 ID:YWwZOVBb(1/2)
末尾再帰を勘違いしている人がいるので説明しておこう。

末尾再帰は「再帰を末尾再帰で書けば速くなる」というものではなくて
(単純な)ループを何らかの理由で再帰の形にしないといけない時、
末尾再帰の条件を満たすように、ループを再帰に変換すると
コンパイラが再帰をループに逆変換してくれる機能

なので、再帰を全て末尾再帰にできるわけではなく
(末尾再帰にできるのは、元が単純なループの場合のみ)
また、ループ ─(人間)→ 再帰 ─(コンパイラ) → ループ
というふうに、ループに戻しているだけなのでループより速くなることはない。
424
(1): デフォルトの名無しさん [sage] 2015/12/27(日)17:54 ID:Zmrinoji(20/40)
>>422
より正確には、「再帰全てをノーコストで末尾再帰にできるわけではなく」かな。
関数がファーストクラスならCPSに変換すれば末尾再帰の形にはなる。
・・・・・・ヒープガリゴリ使うし、スタックを自前で持つのと変わらんけど。
485
(1): デフォルトの名無しさん [sage] 2015/12/29(火)05:14 ID:GnldGbIR(2/3)
>>422
tail callも知らんのかよw
489
(1): デフォルトの名無しさん [sage] 2015/12/29(火)22:38 ID:tgd/4Yaw(1)
>>422の「なので、再帰を全て末尾再帰にできるわけではなく」とか恥ずかしいよなw
490
(1): デフォルトの名無しさん [sage] 2015/12/30(水)07:30 ID:hgJXqSbV(1/3)
>>489
>422 「再帰を全て末尾再帰にできるわけではな」いのは当然だが,どうしてはずかしいんだ?
517: デフォルトの名無しさん [] 2016/01/01(金)00:50 ID:PlqvFYu0(1/5)
>>516
>>422を理解出来てるのか? こりゃすげーわ。
ループを再帰の形にするときに、ループを再帰に変換すると、再帰をループに逆変換してくれるコンパイラの機能が末尾再帰?

>>422が末尾再帰を理解してない事が読み取れるだけだ。
それをお前が読み取れるという事は、同一人物以外あり得ない。
527: デフォルトの名無しさん [] 2016/01/01(金)15:45 ID:PlqvFYu0(4/5)
>>524
おおー、スゲー
その調子で>>422を解説してくれや。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.332s*