- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
109 :デフォルトの名無しさん[sage]:2015/09/07(月) 12:09:37.70 ID:ksoqvTq6 - >>105 俺がそれを指摘して返ってきた反応が「漸化式も知らないの?」だった。
一番の問題は、NASは自分の頭の中で処理したことと、書き表したコードが区別できていないこと。 自分の脳内で一緒だとみなしたものが、外界でも同じものであると妄信している。 ある処理Xは再帰処理でできる(脳内で解釈)、ということと、 ある処理Xを再帰的に実現する(実際にコードを書く)、ということの区別ができないので、 処理Xを非再帰的に書くことも再帰処理だとみなしている。 だからsumを求める処理は再帰的にも非再帰的にも実現できるが、NASの脳内で2つのアルゴリズムは「やりたいことは同じ」という一点で同一視されているので、 非再帰的に書いたコードも再帰だと言ってしまう。 再帰的に実現「できる」ことが根拠ならば、解析解sum(n) = (int)(n * (1 + n) * 0.5)も再帰処理になるけど、 多分脳内ですぐに同一だと解釈できないから再帰じゃないと言うんじゃないかな。 皆がそれは再帰ではない、といくら言っても通じないのはここにある。 あと発作的に自作の木構造のトラバースを書いたコードをコピペしまくって再帰だ、と言っちゃうのも、 「木構造は再帰的に表せる」「木構造に対する処理は再帰的に書ける」という事実から、 「俺の関数は木構造に対する処理だから再帰」という理屈を出しているのも、脳内と外界の区別がついてないということで説明がつく。 こういう人を一言で表す言葉を知っているが、差別的な表現なので控えておく。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
128 :デフォルトの名無しさん[sage]:2015/09/07(月) 15:31:59.16 ID:ksoqvTq6 - >>sumを求める処理は非再帰的に実現できない
int sum = (int)(10 * (1 + 10) * 0.5)); できるから。最適化したら再帰しなくて済むから。 あと何度も繰り返すが、再定義と再帰的定義は全く別物。 C/C++で再帰的定義が許されるのはデータ型と関数の定義のときだけで、右辺値にundefinedな値を持ってくることができない。 値の再帰的定義ってのは、haskellなどの非正格の言語じゃないとできない。 四則演算+関数定義だけの言語でいいから処理系を作ってみるといい。あんたの定義するところの再帰が如何に無意味か分かるから。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
153 :デフォルトの名無しさん[sage]:2015/09/07(月) 20:20:47.57 ID:ksoqvTq6 - ある処理に対してどんな意味付けを、説明をするのかという問題で、NASは再帰という言葉しか知らないだけだ。
sumの一般解も再帰だと言うなら、何も説明できていないことに気付きなさい。 そんな何にでも当てはまる概念は、再帰でないものと区別できるような、際立たせる性質を持っていないことに気付きなさい。 例えて言うなら7という数字を、1+1+1+1+1+1+1としか捉えることができないから、 8という数字も同様に1+1+1+1+1+1+1+1となので似たものだと言うことしか言えない状態なのに気付きなさい。 奇数であること、素数であること、その他色々の面白い性質について論じることができない。 情報処理を学んでないとかそんな次元じゃない。 今まで1度も、人と議論し、切磋琢磨し、学ぶことをしたことがないように見える。
|