1 名前:名無しのプログラマ [2015/08/09(日) 17:46:33.69 ID:Icb40LOY.net] for,while使うの嫌いで基本的に再帰多用するんだが、だめなの? 皆から敬遠されてる気がする
794 名前:class A{ public: A* func(){...return this;} }; A* crnt; while(true){ crnt = crnt->func(); //crntへの再帰処理&NEXT処理 } [] [ここ壊れてます]
795 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:19:20.41 ID:zGjt7Ia9.net] ttp://nas6.main.jp/secret/ContainerPtr.htm ttp://nas6.main.jp/sptr.cpp ttp://nas6.main.jp/NAS6_cntn_ptr.h ttp://nas6.main.jp/NAS6_tree_clct.h 実例は↑の //再帰構文例1 //再帰構文例2 とか
796 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:24:29.51 ID:zGjt7Ia9.net] //再帰構文例1 みたいに書くのがノード検索を なんも考えないで書ける
797 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:30:27.24 ID:htzS6HST.net] >>774 それに近いコードを 「再帰」だって主張している ページを見つけてきてね(大爆笑)
798 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:32:10.40 ID:htzS6HST.net] 当たり前だけど>>774 は funcの中でfuncを呼び出していないから 再帰ではない。
799 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:36:14.88 ID:zGjt7Ia9.net] ttp://nas6.main.jp/sptr.cpp の template<typename T> void disp_NAS6_tree_clct(NAS6_tree_clct<T>* root); template<typename T> void disp_NAS6_tree_clct_key(NAS6_tree_clct<T>* root, string fk); とか、ノード検索をなんも考えないでノード検索が出来ちゃう
800 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:38:50.80 ID:zGjt7Ia9.net] >>777 ttp://msdn.microsoft.com/ja-jp/library/Cc429242.aspx win32api FindNextFile()
801 名前:デフォルトの名無しさん [2015/09/05(土) 23:38:57.11 ID:tTlkULNN.net] 再帰構造をループで処理することを再帰処理と言うてんの?
802 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:40:03.04 ID:htzS6HST.net] >>780 「再帰」って書いてないね。 やっぱり再帰じゃなかったね。 逆の証拠を見つけてくれてあがとう(大爆笑)
803 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:41:35.40 ID:htzS6HST.net] >>781 アホのオレオレ定義だよなぁ(大爆笑)
804 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:45:35.82 ID:zGjt7Ia9.net] ttp://www.google.co.jp/?gws_rd=ssl#q=findnextfile%20%E5%86%8D%E5%B8%B0 FindNextFile 再帰
805 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:48:34.61 ID:htzS6HST.net] >>784 お前がググって 自分で証拠を見つけ出すんだよ(大爆笑) 自分の仕事を(出来ないからって) 他人にやらせるな。
806 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:51:11.81 ID:zGjt7Ia9.net] >>785 >>784 の検索結果のほぼ全て
807 名前:デフォルトの名無しさん [2015/09/05(土) 23:53:43.47 ID:tTlkULNN.net] >>783 うむ、再帰構造と再帰処理を混同しておられるとしか思えぬ。
808 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:54:28.66 ID:htzS6HST.net] >>786 言葉が足りないぞ?(大爆笑) >>785 >>784 の検索結果のほぼ全てに FindNextFileを使って再帰を使ったコードが有ります。 再帰というのは自分の関数自身を呼び出すものなので、 大概そのようになっています。 つまり、検索の一番目だと、このコメントの部分が再帰です。 (FindNextFileの行には再帰とは書いていない) void searchDir(char *lpszDir,HWND hwLst) { /* サブディレクトリ探索 */ 省略 if ((fFind.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=0 && lstrcmp(fFind.cFileName,".")!=0 && lstrcmp(fFind.cFileName,"..")!=0){ /* サブディレクトリの処理 */ 省略 searchDir(lpszSDir,hwLst); /* 再帰呼び出し */ } while (FindNextFile(hSearch,&fFind)) { /* 全ファイルを処理 */ 省略 searchDir(lpszSDir,hwLst); } } FindClose(hSearch); }
809 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:54:52.90 ID:zGjt7Ia9.net] htzS6HST お前あほ杉 なんも分かってないなら書き込むな
810 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:55:51.09 ID:htzS6HST.net] >>789 わかってるから書き込んでいる。 これも「再帰」(大爆笑)
811 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:57:07.95 ID:m0Ws+Wye.net] 話がループ・・・おっと違った 話が再帰してる(大爆笑)
812 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:00:00.32 ID:aj7iBxVG.net] ループと再帰関数を同一だと主張するだけで(それすらオレオレ定義&根拠無し)その先のことを何も言わないのは何故? 「Xは再帰」「Yは再帰」「Zは再帰」って、いくらコードを書いても根拠にならないのは分かってる? お前が書かなきゃならんことは「Xが再帰であることの根拠」であるのだから、お前の頭の中にしかない「再帰関数の定義」を書かないといけない。 もしオレオレ定義じゃないなら>>742 や>>714 の再帰関数の定義に、お前の書くコードがどう当てはまるのか書かないといけない。 そんで結局NAS6 ◆n3AmnVhjwcの主張は何なの?再帰関数が好きなの嫌いなの? スレ違いも大概にしなさいよ。
813 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:01:55.86 ID:8kAWPtv+.net] NAS6 ◆n3AmnVhjwcの主張はこれ。 719 名前:NAS6 ◆n3AmnVhjwc [] 投稿日:2015/09/05(土) 12:25:42.76 ID:zGjt7Ia9 [22/59] int sum = 0; for(int i = 1; i <= 10; i++) { sum = sum + i; } な、これは再帰だろ、頭が悪いんだから、教授に迷惑をかけるなよ
814 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:02:26.01 ID:miXQ60Mg.net] >>788 そのsearchDirの書式を簡単にして ttp://nas6.main.jp/sptr.cpp の template<typename T> void disp_NAS6_tree_clct(NAS6_tree_clct<T>* root); template<typename T> void disp_NAS6_tree_clct_key(NAS6_tree_clct<T>* root, string fk); とか、ノード検索をなんも考えないでノード検索が出来ちゃう
815 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:02:42.93 ID:8kAWPtv+.net] ちなみに>>720 は再帰じゃないから、 >>720 を再帰で書き直すことができる
816 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:03:42.83 ID:8kAWPtv+.net] >>794 今は再帰かどうかの話をしてるんだが?(大爆笑) searchDir の中で searchDir を読んでるから再帰。 FindNextFileを使ってるもの全てが再帰になるわけじゃない。
817 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:07:36.08 ID:miXQ60Mg.net] ttp://nas6.main.jp/secret/ContainerPtr.htm これをコンソールアプリでビルドしてみ ノード検索されてるから で、forとかループに対応するものと言うから 再帰「関数」ではなく再帰「処理」を書いてる
818 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:09:15.40 ID:8kAWPtv+.net] >>797 今は再帰の定義をしている。 全ての再帰はループで処理できる。 ループでノード検索しているから それは再帰でない証拠(大爆笑) ttp://nas6.main.jp/secret/ContainerPtr.htm これをコンソールアプリでビルドしてみ 再帰使わずにノード検索できてるから あ、ちなみに、このコードは俺が書いたんだよ?
819 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:13:16.02 ID:miXQ60Mg.net] 再帰「関数」だと、再帰「処理」内の、全てのコードを完全実装しなければならなくて その振る舞いが決定されるから ttp://nas6.main.jp/sptr.cpp の template<typename T> void disp_NAS6_tree_clct(NAS6_tree_clct<T>* root); template<typename T> void disp_NAS6_tree_clct_key(NAS6_tree_clct<T>* root, string fk); こう書いたんだよ
820 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:16:13.79 ID:miXQ60Mg.net] >>798 なにこのカス
821 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:22:17.38 ID:miXQ60Mg.net] >あ、ちなみに、このコードは俺が書いたんだよ? じゃあ、デストラクタがどう呼ばれるか説明してみ つうか、俺のサイトにお前がアップしたの?
822 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/06(日) 00:29:02.94 ID:0zNPIayW.net] NAS6さん、華麗なる2ちゃんデビューおめ!
823 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:31:05.32 ID:CQ0buOj1.net] ttp://nas6.main.jp/NAS6_tree_clct.h 数時間で↑のデストラクタの振る舞いが読めたら褒めちゃいます
824 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:48:13.59 ID:CQ0buOj1.net] 多分、どうなってるか さっぱり分からんと思うけどね
825 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:09:59.10 ID:laHESI+6.net] キチガイの思考過程がさっぱり分からないのは当然の事だろ
826 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:12:42.58 ID:miXQ60Mg.net] //メモリリーク検出関数 _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); メモリリークゼロ
827 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:15:51.45 ID:miXQ60Mg.net] void main() { int *p = new int; #ifdef _MSC_VER って書くと、int分4バイトだけリーク
828 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:32:13.72 ID:aj7iBxVG.net] NAS6 ◆n3AmnVhjwcは再帰とは何かも含めて、言葉の定義を他と擦り合わせろ。 それができないなら自分のサイトに引きこもっていろ。
829 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:37:20.23 ID:miXQ60Mg.net] 俺は再帰「処理」を書いてるよ 再帰「関数」ならば、それで完結した書き方を 書かなきゃならなくて適宜運用に不向き
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項までの和を使って再定義します 他にどう読める?