C言語なら俺に聞け(入門編)Part 61
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
100:デフォルトの名無しさん 10/03/08 01:21:16 >>99 再帰関数で大きな自動変数の配列を使うのはナシだろ 101:デフォルトの名無しさん 10/03/08 01:25:22 なにこの制限だらけのtac 102:デフォルトの名無しさん 10/03/08 01:50:03 >99 これは再帰の悪い例としていつか使わせてもらう 103:デフォルトの名無しさん 10/03/08 02:14:39 >>再帰 文字列の中から、正規表現によって単語検索をする場合、正規表現の文字列の並びを、配列から、一旦、順序木の構造に変換してしまって、 木のノードを順番に辿りながら、文字列を検索していくと、一連の検索を、共通の操作であつかえて簡単だとおもいます。 たとえば括弧で囲まれて1まとめになった複数条件も、あるノードの子としてまとめて、”あるノードの子というひとまとまりの単位”であつかえるので、 たとえば単純な ”A" という条件も、複雑な ”[AかBかC]”みたいな括弧で囲まれた条件も、どちらも同一の「”このノード”を使って検索する」という操作で扱えます。 これが再帰を使って得られる簡単さという恩恵だと思います。 簡単に素直にするために再帰を使うんだと思います。 たとえば括弧に囲まれた複数文字も、囲まれてない単一文字も、どちらも同じように考えて検索できるのだから、 木がどんなに複雑な形をしてても、逆にどんなに単純な形だとしても、 どちらも同じ要領で「”このノード”を使って検索する」という共通の操作だけで最後まで処理できます。 この順序木を巡っていくという操作を、単一のループだけでやろうとすると、 「さまざまな形の木を想定」して、それぞれに専用の動作を書いたりするケースが出てきやすいと思います。 (たとえば "A"の場合と "[AかBかCか]"の場合とでの動作の違いを、「わざわざ専用に用意」しないといけいない。などのメンドクササ。 これがループだけでやる場合のメンドクササだと思います。) だけど、純粋に繰り返しの処理速度だけでみれば、やっぱり for ループみたいなモノの方が優れてるような気がします。よく知りませんが。 普通はループで十分事足りるので、たとえば「シンプルな int[1000] の配列全部に0を代入する」だけのことに、わざわざ再帰を使う必要は無いと思うし、 無理やり再帰なんか使ったら、逆に、わかりづらくなるだけだろうし、わかり辛いとミスも増えますし。 あたりまえですけど、「より簡単に、より素直に書ける方」を選んで使えばいいだけのことかとおもいます。どっちも便利だとおもいます。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5399日前に更新/110 KB
担当:undef