1 名前:名無しのプログラマ [2015/08/09(日) 17:46:33.69 ID:Icb40LOY.net] for,while使うの嫌いで基本的に再帰多用するんだが、だめなの? 皆から敬遠されてる気がする
830 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:41:27.92 ID:aj7iBxVG.net] なら何故ここにいるの?スレタイ読めないの?
831 名前:デフォルトの名無しさん [2015/09/06(日) 01:43:51.10 ID:Zg6i8dH9.net] >>809 普通は再帰関数で行う処理のことを再帰処理って言うんだと思うよ。
832 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:48:22.86 ID:CQ0buOj1.net] 1 :名無しのプログラマ:2015/08/09(日) 17:46:33.69 ID:Icb40LOY for,while使うの嫌いで基本的に再帰多用するんだが、だめなの? 皆から敬遠されてる気がする for,whileって言うから、それに対応するものは スレタイの再帰「関数」じゃなくて、再帰「処理」だからだよ
833 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:55:27.64 ID:CQ0buOj1.net] ttp://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E7%9A%84%E5%A
834 名前:E%9A%E7%BE%A9 再帰的定義 [] [ここ壊れてます]
835 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:56:17.98 ID:8PjODHJ7.net] 一人でそうゆうこと書いてて満足か?
836 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:08:49.81 ID:miXQ60Mg.net] 「再帰的定義: "再帰的定義"を参照」 //再帰構文例1 template<typename T> void recHoge1(NAS6_tree_clct<T>* root, string fk) { bool parent = false; if (&root->recursiveInit() == nullptr) return; NAS6_tree_clct<T>* crnt = root; //crnt = root; の時のcrntに適用の処理 //or : //if (crnt->conformkey(crnt, fk) != string::npos) //{...} //キー検索の時 while (!crnt->recursiveIsEnd(root)) { //「再帰的定義: "再帰的定義"を参照」 parent = false; crnt = &(crnt->recursiveNext(root), parent); //or : //crnt = &(crnt->recursiveKeyNext(root, fk, parent)); //if(!parent) //{...} //crnt = Next; の時のcrntに適用の処理 //else //{...} //親に戻った時の処理 } } 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
837 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:14:12.46 ID:miXQ60Mg.net] //「再帰的定義: "再帰的定義"を参照」 parent = false; crnt = &(crnt->recursiveNext(root), parent); //or : //crnt = &(crnt->recursiveKeyNext(root, fk, parent)); 左辺のcrntは、右辺のcrntの子ノードに遷移してんの
838 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:17:05.47 ID:aj7iBxVG.net] それが文脈が無駄に高いオレオレコードをコピペする理由になると思ったのはどうして? >>720 を再帰だ、などという戯言が通らなくて癇癪起こしているだけじゃないか。 で、>>813 の定義に>>720 がどう当てはまっているんだ?俺には分からない。 もしもsum = sum + iが再帰的定義なんだと思っているなら、それは単なる代入だから違うぞ。
839 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:20:56.64 ID:CQ0buOj1.net] //or : //crnt = &(crnt->recursiveKeyNext(root, fk, parent)); ああ、こっちはキーの一致の次のノードで子とは限らんけど 再帰だからもちろん親のノードにも最下層まで行ってから帰ってくるよ
840 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:21:09.18 ID:8PjODHJ7.net] 君、途中で再帰関数と再帰処理の違いを指摘されてなかったか? なんか無言で言ってることを切り替えてるようだけど。
841 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:24:47.62 ID:miXQ60Mg.net] 「再帰的定義: "再帰的定義"を参照」 f(n+1) = f(n) + i; sum = sum + i;
842 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:26:17.85 ID:8PjODHJ7.net] >>820 もっかい聞くけど楽しいか?
843 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:28:04.25 ID:CQ0buOj1.net] めちゃくちゃ楽しい
844 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:32:22.07 ID:8PjODHJ7.net] ちょっと自己顕示欲が強いんだね ただそれは迷惑だからそのへんも考えれるようになればいいね
845 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:33:09.17 ID:CQ0buOj1.net] 「再帰的定義: "再帰的定義"を参照」 f(n+1) = f(n) + i; sum = sum + i; 左辺はn+1項で、右辺はn項
846 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:40:59.21 ID:CQ0buOj1.net] 670 :NAS6 ◆n3AmnVhjwc :2015/09/05(土) 07:33:00.36 ID:zGjt7Ia9 >>657 おま、戻り値を使いまわしたら基本的に再帰じゃないの?。。。 最初に書きました 戻り値の使い回しは基本的にn+1項の定義
847 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:52:22.91 ID:CQ0buOj1.net] 厳密にするわ 「再帰的定義: "再帰的定義"を参照」 f(n+1) = f(n) + i; sum = sum + i; 左辺はn+1項までの和で、右辺はn項までの和
848 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:53:55.79 ID:miXQ60Mg.net] 全然間違ってすらいないよ
849 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 03:05:39.93 ID:miXQ60Mg.net] 一体、他にどう読んでたんだよ?
850 名前:デフォルトの名無しさん [2015/09/06(日) 03:21:13.07 ID:Zg6i8dH9.net] >>828 君は他の人が言う再帰をどう読んでたの?
851 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 03:21:47.38 ID:aj7iBxVG.net] 全然違うよ。右辺のsumはどこで定義したんだ?int sum = 0が定義。sum + iでただ更新してるだけ。 一方のfは、初期値も含めて正確に表せばf(n) = if n = 0 then 0 else f(n-1) + 1となっていて、fを定義するのにf自身が必要。 これが再帰的定義。
852 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 03:30:27.61 ID:miXQ60Mg.net] おいおい、初項を決めないで再帰(帰納)定義ができるわけはないだろ
853 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 03:33:43.48 ID:CQ0buOj1.net] おま、数学の帰納法も開始できないのか?
854 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:00:23.70 ID:g2
] [ここ壊れてます]
855 名前:NsvO1D.net mailto: ヒントってか答え 初項:f(n = 0) = 0 f(1) = 0 + i f(2) = f(1) + i = i + i f(3) = f(2) + i = 2 * i + i ... f(n + 1) = f(n) + i [] [ここ壊れてます]
856 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 04:17:34.08 ID:aj7iBxVG.net] sumを定義するのにsumを使っていないから駄目で、sum = sum + iは定義じゃなくて単なる更新だから再帰的定義ではない。 int sum = 0とした後にどう更新しようが再帰的とは呼ばないんだよ。 百歩譲ってこれを再帰的定義と呼ぶのなら、当てはまる例が多すぎて何の価値もない概念になる。i++も再帰になるし int y = 1; int x = 2; x = y としたら偶々x = x/2をという処理になるからこれもお前の言う再帰的定義になるよな。 そんな馬鹿なもんにわざわざ名前を付ける意味も無いし、好き嫌いも語れんよな。
857 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:18:39.27 ID:g2NsvO1D.net] >>830 では、理系の学部を卒業するのは奇跡だろ
858 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:20:59.76 ID:CQ0buOj1.net] つ漸化式
859 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:30:52.77 ID:CQ0buOj1.net] もしかして ゆとりって、そんなヒドイの?
860 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:34:02.41 ID:CQ0buOj1.net] そんなわけはないと思いたい
861 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:39:58.28 ID:miXQ60Mg.net] 漸化式から再帰定義をコーディングするのは当たり前だろ? 学部で習わなかった?
862 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:45:55.83 ID:miXQ60Mg.net] おかしいな 理系ならば情報処理の単位で 漸化式からの再帰定義は カリキュラムに多分あるはずだけど?
863 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 04:54:07.46 ID:8PjODHJ7.net] 元々な、そんな話は誰一人としてしてないからね。 自信満々に書き込んでる内容自体が全部ずれてるからね。 で、仮にそれが再帰だとして言いたいことはなんだ?
864 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:55:04.91 ID:miXQ60Mg.net] ttp://www.a.math.ryukoku.ac.jp/~junta/edu/nc/exercise/5.html >>758 >>760
865 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:58:01.28 ID:CQ0buOj1.net] >>842 みたいなのを自分でやらずに コピペ提出したんだろ
866 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 05:05:14.35 ID:8PjODHJ7.net] ベンチ取ってないけどCの場合だと速いのは下だろう つーか再帰の定義を世間のプログラマと同じにしたらどうだ
867 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 05:25:54.12 ID:g2NsvO1D.net] バグがあると見るなら訂正 double calcPI(double r, double s, double n) { double u = 1.0; if (s == 1) u = 2.0; if (n == 0) return u * ( r + (r * s / (2.0 * s + 1.0))); return u * (r + calcPI(r * s / (2.0 * s + 1.0), s + 1, n - 1)); } double calcPI3(double n) { double r = 1.0; double s = 1.0; double t = 1.0; double u = 1.0; while (0 <= n) { t = t * s / (2.0 * s + 1.0); r = u * (r + t); s += 1; n -= 1; } u = 2.0; return u * r; }
868 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 05:31:14.68 ID:CQ0buOj1.net] ああ元のまんまかな >>760
869 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 09:07:19.68 ID:8kAWPtv+.net] >>834 > sumを定義するのにsumを使っていないから駄目で、sum = sum + iは定義じゃなくて単なる更新だから再帰的定義ではない。 > int sum = 0とした後にどう更新しようが再帰的とは呼ばないんだよ。 ホントその通り。 頭の悪さがにじみ出てるよねw
870 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 10:34:04.98 ID:DHZQ2m5W.net] 破壊代入を認めないというルールのもとではどうなるの?
871 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:30:18.37 ID:miXQ60Mg.net] ヒントってか答え 初項:f(n = 0) = 0 f(1) = f(0) + i = 0 + i f(2) = f(1) + i = i + i f(3) = f(2) + i = 2 * i + i ... f(n + 1) = f(n) + i sum = sum + i >>847 どう見ても漸化式通りの振る舞い
872 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 11:31:06.67 ID:8kAWPtv+.net] 再帰の定義を調べてみたら、 関数が自分自身の関数を 呼び出していることって書いてあった。
873 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:36:22.64 ID:miXQ60Mg.net] あ、 ヒントってか答え 初項:f(n = 0) = 0 i(n = 0) = 1 i(n + 1) = i(n) + 1 f(1) = f(0) + i(0) = 0 + i(0) f(2) = f(1) + i(1) = i(1) + i(0) f(3) = f(2) + i(2) = i(1) + i(0) + i(2) ... f(n + 1) = f(n) + i(n) sum = sum + i >>847 どう見ても漸化式通りの振る舞い
874 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 11:40:30.06 ID:8kAWPtv+.net] 再帰っていうのは、漸化式かどうかは関係なくて 関数が自分自身の関数を 呼び出していることらしいね。
875 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:54:16.59 ID:miXQ60Mg.net] 653 :デフォルトの名無しさん:2015/09/04(金) 23:24:17.87 ID:q06Od88z n-1 までの和に n を足せば nまでの和が得られる、という原理に忠実な計算なんで 再帰以外のなにものでもないんだけど、基礎論触ったことないとわかんないかもね。 656 :デフォルトの名無しさん:2015/09/04(金) 23:29:28.63 ID:vuZU5Hwi >>653 ループじゃんw 書けば理解できるのか? int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; }
876 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:57:27.68 ID:miXQ60Mg.net] 初項:f(n = 0) = 0,i(n = 0) = 1 i(n + 1) = i(n) + 1 f(1) = f(0) + i(0) = 0 + i(0) f(2) = f(1) + i(1) = i(1) + i(0) f(3) = f(2) + i(2) = i(1) + i(0) + i(2) ... f(n + 1) = f(n) + i(n) ↓が↑こういう
877 名前:漸化式になってるのが理解できないのか? int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; } [] [ここ壊れてます]
878 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:02:33.74 ID:8kAWPtv+.net] みんなわかってると思うけど、 誰も漸化式であることを否定していない。 漸化式をとく問題を ループで書くか再帰で書くかって話をしている。 再帰で書くとスタックを消費する。 場合によってはスタックオーバーフローを起こす。 だからスタックオーバーフローを気にするならば ループで書く。そして多くの場合ループのほうが速い。 という話をしている。
879 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:02:46.10 ID:CQ0buOj1.net] 初項:f(n = 0) = 0,i(n = 0) = 1 i(n + 1) = i(n) + 1 f(1) = f(0) + i(0) = 0 + 1 f(2) = f(1) + i(1) = i(1) + i(0) f(3) = f(2) + i(2) = i(0) + i(1) + i(2) ... f(n + 1) = f(n) + i(n) ↓が↑こういう漸化式になってるのが理解できないのか? int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; }
880 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:04:50.09 ID:5yTvo1pN.net] もうやめといてやれよ NAS6は自分で新しい言葉を定義するのが好きな精神障害者だろ こういうのは「言語新作」と言って統合失調症特有の症状 要するに脳内はドーパミンドハドバ出まくりで覚せい剤を決めてるような感じになってるわけだ これは統合失調症の陽性症状 ただ統合失調症はそんなに甘くなく「バッドトリップ」、すなわち陰性症状もひどい だから2chに書き込みしてない時は死にたくなってるんじゃね これじゃまともな日常生活を送れるわけがない 廃人みたいな私生活なんだろうな なんでム板には精神異常者が多いんだろうねえ
881 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:07:52.59 ID:8kAWPtv+.net] コピペ始めちゃったしねw コミュ障であることは明らか
882 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:09:07.82 ID:CQ0buOj1.net] >>855 それは再帰の最適化だから ループの再帰なんだけど? 再帰「関数」にせよ、ループ再帰にせよ 再帰(帰納)定義を実装しなければならない
883 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:13:50.10 ID:n7lw0XxH.net] >>855 末尾再帰じゃないと再帰じゃないっつってんだろ
884 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:16:12.34 ID:CQ0buOj1.net] 初項:f(n = 0) = 0,i(n = 0) = 1 i(n + 1) = i(n) + 1 f(1) = f(0) + i(0) = 0 + 1 f(2) = f(1) + i(1) = i(1) + i(0) f(3) = f(2) + i(2) = i(0) + i(1) + i(2) ... f(n + 1) = f(n) + i(n) ↓が↑こういう漸化式になってるのが理解できないのか? int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; } それは再帰の最適化だから ループの再帰なんだけど? 再帰「関数」にせよ、ループ再帰にせよ 再帰(帰納)定義を実装しなければならない 勝利 V(ブイ)!!
885 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:20:43.70 ID:miXQ60Mg.net] >>860 おま、こうしか書けなくて int hoge(){ //処理 return hoge(); } こう書けないの? int hage(){ //再帰push処理 int i = hage(); //再帰pop処理 return i; }
886 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:25:45.01 ID:5yTvo1pN.net] おくすり飲み忘れてるよNAS君 ハイの時間が長いほどローの時間が長くてひどいのは君が一番よく知ってるだろう
887 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:29:41.96 ID:miXQ60Mg.net] ははは、論理で敵わないと、人格攻撃をして醜態をさらす
888 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:33:58.57 ID:8PjODHJ7.net] >>864 こういっちゃなんだが、そう思ってるのは君だけだろう。 誰もがそれを逆に見てると思う。
889 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:36:27.22 ID:miXQ60Mg.net] 人格攻撃の書き込みが、書いた本人の醜態をさらしている以外のなんだと思うの?
890 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:37:41.03 ID:8PjODHJ7.net] 読むところはそこじゃないでしょ。 最初から読んだけど都合のいいことばっか書いたり読み飛ばしたり話変えたりってのが多いと思うよあなた
891 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:37:54.03 ID:miXQ60Mg.net] >>865 >>861
892 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:39:49.40 ID:8PjODHJ7.net] 典型的な例がそれね
893 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:40:45.30 ID:8PjODHJ7.net] 一応言うけど、親切7割で書いてんだよ
894 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:46:22.23 ID:miXQ60Mg.net] int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; } 左辺のn+1項までの和を右辺のn項までの和を使って再定義します 他にどう読める?
895 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:49:12.16 ID:8PjODHJ7.net] そんな話じゃない
896 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:50:45.59 ID:CQ0buOj1.net] 俺は親切10割で書いてるよ
897 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:53:54.77 ID:o0S33vFB.net] 再帰関数ってのは問題に対する言葉じゃなくて、それをどうコーディングするかに対する言葉
898 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 13:04:05.67 ID:miXQ60Mg.net] ttp://akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf 再帰関数講義pdf
899 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:15:58.86 ID:VTGxMrVA.net] なにそのURL。だからなんだ? あからさまに>>871 は再帰じゃないって書いてあるが
900 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:22:34.79 ID:1eGH5HCM.net] スレ
901 名前:読んだ 現実を直視することって大切だよなって思いました [] [ここ壊れてます]
902 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:37:10.03 ID:8kAWPtv+.net] int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; } これは明らかに再帰じゃないなw これを再帰と説明しているページがアレば いってくれ。 ないなら、黙ってろ。
903 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:38:20.61 ID:8kAWPtv+.net] おっと、黙ってろっていうのは、 >>878 に対してだけだだ。 別に>>878 と関係ないことを話すのは構わない(笑)
904 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:45:24.53 ID:VTGxMrVA.net] 予測だが、抽象化や概念を扱うのが極端に苦手なんだろう なのでそれを伴う会話、論理、もしくはそれ以前に単語の意味が理解出来ない
905 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 13:46:24.96 ID:miXQ60Mg.net] ttp://akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf 再帰関数講義pdf >>878 数列の和の再帰実装の項目が読めないの? つづけて、 2.2 なぜ,再帰関数なのか? 再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合, どちらを使うべきだろうか? 両方使える場合は繰り替えし文を使うべきである. 計算速度も早いし,メモリの消費も少ないからである. ではどこで,再帰関数の登場機会があるのか. 単純な問題であれば繰り替えし文の方が良いが, 複雑な問題となると再帰関数で記述はできるが, 繰り替えし文ではプログラムが大変困難な場合がある.
906 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:48:14.91 ID:8kAWPtv+.net] >>881 これのことだろうけど、 普通に、sumの中でsumを使っており、 そのsumの部分に再起するって書いてある。 / / ========================= 25 / / ユーザー定義関数 sum 26 / / ========================= 27 i n t sum ( i n t n ) { 28 29 i f ( n == 1 ){ 30 r e t u r n 1 ; 31 } e l s e { 32 r e t u r n sum ( n?1) + n ; / / 再帰する 33 } 34 35 }
907 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:49:21.03 ID:8kAWPtv+.net] 2 再帰関数とは 2.1 再帰関数の例 自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び 出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て みよう. 2.2 なぜ,再帰関数なのか? 再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ の消費も少ないからである.で
908 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:51:10.04 ID:VTGxMrVA.net] なんでループと再帰が同じって言ってるやつが、 両方使える場合はループだの、複雑なことは再帰だのになんだよ。 言ってることが支離滅裂。
909 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 13:57:22.43 ID:miXQ60Mg.net] >>884 それはスコープスタックを ループは保存しないで行ったっきり 再帰関数はpushして最下ノードまで行って popして戻りつつ新たな下ノードのpush&pop検索をするからだよ
910 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:00:39.98 ID:VTGxMrVA.net] >>878 この方法にしとけ for(int i = 1; i <= 10; i++) { sum = sum + i; } 「これは再帰関数です」とか「これは再帰ではありません」とか明示的に書いてあるやつがいい それなら理解出来るだろ あと再帰やループの制御構造は、forやwhileや関数の呼び出しだからな。 決してsimではない
911 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:01:24.37 ID:VTGxMrVA.net] >>885 保存しないのがループなんだろうが
912 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:07:04.25 ID:miXQ60Mg.net] ttp://ja.wikipedia.org/wiki/%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88 クイックソート そんなに言うならループで書いてみてよ
913 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:20:43.68 ID:VTGxMrVA.net] 繋がりが分からん
914 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:21:51.14 ID:miXQ60Mg.net] >>884 >>885 >>888
915 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:22:35.47 ID:VTGxMrVA.net] ただの一度とて俺はループで何が出来るだの出来ないだの一覚えはない 頭大丈夫か? で?ルールで書けってことは「ループじゃない物」があるってことだよな? それをここにいるほぼ全ての人は再帰と読んでるわけだが
916 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:28:26.07 ID:miXQ60Mg.net] >なんでループと再帰が同じって言ってるやつが、 >両方使える場合はループだの、複雑なことは再帰だのになんだよ。 >言ってることが支離滅裂。 >両方使える場合はループだの、複雑なことは再帰だのになんだよ。 これが支離滅裂と思うんなら、クイックソートをループで書いてごらん
917 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:47:29.00 ID:LToipCL/.net] 書くのはおまえだろうが。
918 名前:俺はループと再帰の区別してるから。 再帰はループとは別にあるし、再帰が良いと思った時は再帰だ。俺はな。 そして支離滅裂なのはそのURLじゃなくておまえだ。 おまえは区別しないなら全部同じ書き方でかけ。 ループと再帰と言う単語すら使うな。区別しないなら徹底的に区別するな。 それ以前に for(int i = 1; i <= 10; i++) { sum = sum + i; } これが再帰と書かれたサイトなり資料なり探し終わるまで黙っとけ。多数に言われてんだから。 [] [ここ壊れてます]
919 名前:デフォルトの名無しさん [2015/09/06(日) 14:51:28.16 ID:pbpREKnW.net] >>888 >>892 ループで書いた peace.2ch.net/test/read.cgi/tech/1434079972/8
920 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:53:47.20 ID:LToipCL/.net] 知らんわんなもん おまえはループと書くな。区別しないのだから
921 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:55:26.13 ID:miXQ60Mg.net] 分かってませんでしたって言うなら言えばいいよ クイックソートのループ実装はムチャ振りだから
922 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:57:32.04 ID:LToipCL/.net] なんの話だ? 関係ない話なら「後から」付き合うけど? ごちゃごちゃ言ってないでさっさと探して来い。
923 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:59:58.98 ID:miXQ60Mg.net] >>894 push&popって、わざわざ作ってループにするくらいなら 素直に再帰関数使えよ push&popのループは実装にもよるけど再帰関数とほぼ同じ
924 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:00:49.47 ID:LToipCL/.net] ループは再帰なのにループの実装は無茶振りねぇ ふーーん ま、これについても探してきてから相手してやるか
925 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:01:20.67 ID:miXQ60Mg.net] >>898 >>885
926 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:03:20.65 ID:LToipCL/.net] それはループと再帰を区別してるっていうんだよ。 単語が必要になった時点でな
927 名前:デフォルトの名無しさん [2015/09/06(日) 15:03:29.78 ID:JSf18249.net] >>898 ループで実装しとけばpopの過程で残りの処理やらんでいいわってときに 処理を打ち切れるんだよ。そういう意味では再帰をループで実装する意味はあるかと。
928 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:03:31.85 ID:miXQ60Mg.net] >>899 >>885 push&pop実装してループすりゃ良いけど、それなら素直に再帰関数使え
929 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:04:44.43 ID:8kAWPtv+.net] 2 再帰関数とは 2.1 再帰関数の例 自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び 出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て みよう. 2.2 なぜ,再帰関数なのか? 再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ の消費も少ないからである.で
930 名前:デフォルトの名無しさん [2015/09/06(日) 15:05:50.49 ID:JSf18249.net] >>903 再帰よりもループのが都合いいことあるんよ 関数呼び出しを途中で打ち切ること出来ぬでしょ