- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
662 :デフォルトの名無しさん[sage]:2015/09/05(土) 00:56:03.07 ID:dKM7sd/0 - a. 再帰は不要
b. ループは不要 c. どっちも欲しい d. 言語に合わせる aとb(いるのか?)に精神病患者がいるせいで、 cの人の投げた話題を勝手にa(あるいはb)の人間の主張と見なして攻撃するのがおかしい。 aに反駁したらループ不要派だとレッテルを貼られ、 bに反論したら再帰理解できない馬鹿とレッテルを貼られるが、そもそもnot a != bだしnot b != aだからな。 再帰関数を作る時は、頭に保持しなきゃならない情報が少ないのがいいよ。 f(n)の定義を使ってf(n)を定義できるイメージ。場合分けだけで済む。 古典的なインデックスを使うforループより、要素を1つずつ取り出すっていうのが明確なforeachが好まれるのも似た理屈だと思う。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
663 :デフォルトの名無しさん[sage]:2015/09/05(土) 01:09:05.88 ID:dKM7sd/0 - あと、再帰はパターンマッチがあると途端に利便性が上がる。
例えばリストの要素を2つ以上必要とする処理を書くとき、OCamlだと let rec foo acc xs = match xs with | x :: y :: rest -> foo (do_something x y acc) y::rest) | _ :: [] | [] -> finish_something みたいに書けて楽。ループだとインデックスの範囲とか終了条件とか色々考慮しなきゃならんので手間がかかる。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
742 :デフォルトの名無しさん[sage]:2015/09/05(土) 15:16:46.56 ID:dKM7sd/0 - その定義だと相互再帰は再帰じゃないのかと重箱の隅をつつかれるけど、間違いじゃない。
クソコテは速やかにNG入れるといいよ。ラーメンが好きかどうかの話をしている中でお茶漬けもラーメンだと強弁するような、話題に入ることができない人だから。
|