- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
85 : ◆tAo.kQ2STk [sage]:2015/12/02(水) 00:55:46.45 ID:SG5bn8pD - 再帰で書かれた超有名な関数をループにするだけの簡単なお仕事なのに
何ですぐに出来ないんだろうね? # 全然簡単じゃないからです
|
- Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net
704 :デフォルトの名無しさん[sage]:2015/12/02(水) 04:33:58.56 ID:SG5bn8pD - rubyで、ぷよぷよの最大連鎖数を計算するプログラムを組もうかと思ったらどう書く?
https://ideone.com/qMs43L
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
94 : ◆tAo.kQ2STk [sage]:2015/12/02(水) 09:39:29.64 ID:SG5bn8pD - >>89
問題のすり替えはいけないな。 俺は「難しくないならやってみて?」って言っただけで そもそも「再帰のほうがループより圧倒的に簡潔に書けるよね?」って文脈だろ。 君が「難しいから出来るもんならやってみろ」って捉えたかどうかなんざ知らんがおつかれさん うんうん、言いたいことは分かった。 それで、そのコードのどこら辺が綺麗なの? ちなみに機械的に変換したのがこちら(rubyじゃなくてごめんよ) https://ideone.com/XsZh4c fとhは機械的に変換したという意味では等価だし君のコードとほぼ同じ事をしてるのだけど、 h関数をパッと見て>>69式と等しいって言うのは凄く度胸が居るよね? >>92 そもそも再帰をどうやってソフトウェア実装してるかというとコールスタック+ジャンプ≒スタック+ループな訳で # ちなみにスタックの正しいスペルはstack。stackuなんて子は知りませんね。
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
95 : ◆tAo.kQ2STk [sage]:2015/12/02(水) 09:48:27.56 ID:SG5bn8pD - s/69/67/
|
- なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
99 : ◆tAo.kQ2STk [sage]:2015/12/02(水) 11:28:01.97 ID:SG5bn8pD - >>97
アセンブリ言語によくあるcall系命令の挙動を正確に言えるようになれば どんな再帰もスタックとループで書けるようになるよ 何しろスタックとループで再帰を表現してるのがcall系命令だからね。 それをそのまま書くとこんな具合に超汚くなるけど。 https://ideone.com/0QXd8O
|
- C++14/C++1z 20
803 :デフォルトの名無しさん[sage]:2015/12/02(水) 12:28:07.16 ID:SG5bn8pD - >>801
Effective Modern C++の第一章項目4から転載するけど、 template <typename T> class TD; というクラスを宣言しておけば、 TD<decltype(y)> _; した時にコンパイラのエラーメッセージに型が表示される。 うちの環境だと、 struct S {double m;}; foo(&S::m); の時、 R = double T = S pm = double S::*& になるっぽい。 いつから書けるようになってるのかは今調べてる・・・・・・
|
- C++14/C++1z 20
805 :デフォルトの名無しさん[sage]:2015/12/02(水) 13:34:30.03 ID:SG5bn8pD - C++98の文法と格闘した結果、
template<class R,class T> foo(R T::* pm) は受理される事が分かった。 http://sites.cs.queensu.ca/gradseries/help/stuff/cpp98.pdf 詳細はこんな感じ(template-parameter-listの展開は省略) template-declaration -> export(opt) template < template-parameter-list > . declaration declaration -> function-definition -> decl-specifier-seq(opt) . declarator ctor-initializer(opt) function-body declarator -> direct-declarator -> . direct-declarator ( parameter-declaration-clause ) cv-qualifier-seq(opt) exception-specification(opt) direct-declarator -> declarator-id -> id-expression -> unqualified-id -> identifier -> foo direct-declarator ( . parameter-declaration-clause ) cv-qualifier-seq(opt) exception-specification(opt) parameter-declaration-clause -> . parameter-declaration-list(opt) ...(opt) parameter-declaration-list -> parameter-declaration -> . decl-specifier-seq declarator decl-specifier-seq -> decl-specifier-seq(opt) . decl-specifier decl-specifier -> type-specifier -> simple-type-specifier -> ::(opt) nested-name-specifier(opt) . type-name type-name -> typedef-name -> identifier -> R decl-specifier-seq . declarator declarator -> . ptr-operator declarator ptr-operator -> ::(opt) . nested-name-specifier * cv-qualifier-seq(opt) nested-name-specifier -> . class-or-namespace-name :: nested-name-specifier(opt) class-or-namespace-name -> class-name -> identifier -> T ptr-operator . declarator declarator -> direct-declarator -> declarator-id -> id-expression -> unqualified-id -> identifier -> pm
|
- Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net
707 :デフォルトの名無しさん[sage]:2015/12/02(水) 15:27:49.31 ID:SG5bn8pD - >>705
なんつー無駄な処理をww >>706 2つだけなら全探索でも良いんだけど、10個20個になるとだんだん辛くなってくる
|
- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
23 :デフォルトの名無しさん[sage]:2015/12/02(水) 17:51:28.60 ID:SG5bn8pD - >>22
単なるint型は整数型で、整数が入る INT_PTR型はポインタ型に等しい幅を持つ整数型で、ポインタ型をどうしても整数型にキャストしたい時に使うらしい。 以下引用 ポインタは int、LONG、ULONG、DWORD のいずれの型にもキャストしないでください。 ビットのテスト、ビットの設定とクリア、またはポインタの内容の操作のためにポインタを キャストする必要がある場合は、UINT_PTR 型または INT_PTR 型を使用します。 これらの型は、32 ビット版の Windows と 64 ビット版の Windows の両方のポインタに合わせて サイズが変更される整数型です (たとえば、32 ビット版の Windows の場合は ULONG 型、 64 ビット版の Windows の場合は _int64 型に変更されます)。 https://msdn.microsoft.com/ja-jp/library/aa384242.aspx
|
- C++相談室 part120 [転載禁止]©2ch.net
909 :デフォルトの名無しさん[sage]:2015/12/02(水) 17:54:06.75 ID:SG5bn8pD - >>908
どんな静的チェック掛けてるか知らんけど、何事にも基本と例外があるのよ
|