2008-10-29

http://anond.hatelabo.jp/20081028222130

元増田と違う人かもしれないが、

言語によるのかも知れないが、私が触ってきた言語では全部自分自身を関数呼び出しすることを再帰と言っていた。

これには同意します。しかしながら、

再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない?

処理A -> 処理B -> 処理A が再帰処理の名前の由来でしょ?

これは再帰呼び出しの説明としては、やっぱり変だと思いますよ。

ネタ扱いしたのは悪かったですけど。

これも言語によるのかも知れないけど、私が触ってきた言語では再帰スタック領域を消費していた。

理論上は同じループ処理かも知れないが、現実的には違うものであり、ループのほうが一般的に処理コストが小さいはず。

もちろん、別増田も指摘している通り、すべての言語が末尾最適化されてるわけじゃありません(ついでに言うと、すべての再帰呼び出しループに変換できるわけでもありません)。

しかし、gccですら(条件付きながら)末尾再帰最適化してくれるご時世ですから、必ずしも「再帰スタック領域を消費」「ループのほうが一般的に処理コストが小さい」とは言えないと思いますよ。まあ、gccなんぞ知らんと言われればそれまでですが。

というか、もともとはプログラム構造の書き換えの話で、処理系の実装の話をしているつもりはなかったのですけどね。

記事への反応 -
  • for を再帰で代替するなんて、どういうメリットがあるの?

    • for を再帰で代替するなんて、どういうメリットがあるの? 逆だよ。ループ構文が再帰の一種なの。 だから代替するってのはちょっと違う。

      • ループが再帰処理の一種・・・? 再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない? 処理A -> 処理B -> 処理A が再帰処理の名前の由来で...

        • 「俺にとってはループの方が判りやすい」という主張は否定しないが。 再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない? 処理A -> 処...

          • よくわかってないならマジレスしなくていいよ。ネタじゃないし。 それは「関数呼び出し」じゃないかな? 言語によるのかも知れないが、私が触ってきた言語では全部自分自身を関数...

            • 元増田と違う人かもしれないが、 言語によるのかも知れないが、私が触ってきた言語では全部自分自身を関数呼び出しすることを再帰と言っていた。 これには同意します。しかしな...

              • プログラム構造のレベルでも、個人的な感覚の問題かもしれないが、再帰処理よりもループのほうがわかりやすい。 それで、元々のプログラムがループで記述されていた場合、わざわざ...

                • 再帰ねー 木探索を簡潔に記述できる以外でループに勝る点なんかほとんど思いつかないんだけど 末尾再帰しかしないならループの方が簡潔だし、少なくともループの方が遅いことはない ...

                • 最初のネタ扱いの書き方が失礼だったことは申し訳なかったですが、どうかカッカしないで欲しい...。 で、結局、何を「メリット」と考えるか、何を軸に「大小関係」を考えるのかがず...

                  • 別に怒っちゃいないよ。 表現力としても再帰処理よりループのほうが優秀だと思うな。 再帰処理はループ以外の処理もできるけれど、ループはループしかしないからね。 これが再帰...

                    • 再帰処理って処理を停止して新しい処理を行い、終了後に停止していた処理に戻ることじゃない? 処理A -> 処理B -> 処理A が再帰処理の名前の由来でしょ? 大はずれだろ。どこが「...

                    • 元エントリについている『大はずれだろ。どこが「名前の由来」やねん。』云々は別増田です (って言っても増田だから説得力ないかもしれませんが) さて、 表現力としても再帰処...

                      • 元エントリについている『大はずれだろ。どこが「名前の由来」やねん。』云々は別増田です 口調が違うのでわかります。 ちなみにそのエントリについてるエントリも私とは別増田で...

          • 「末尾再起のある処理系なら」と付け加える必要があるのでは?

        • 元増田じゃないけど、LISPとかの話じゃないかな。 ループは再帰で実現できるけど、再帰はループで実現できない。だから論理的には、再帰の方がより一般的。(再帰さえあればOK) ただ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん