トップページ⇒tech
1002コメント380KB

なあ、再帰関数好きな人いる? パート2 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/09/06(日) 17:35:49.88ID:8kAWPtv+
再帰とは何か?

http://ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html

★再帰を使わない例
この階乗関数を Basic プログラムとして実現してみると,
(Tiny Basic には階乗関数 Factorial が内蔵されていますから,
実際にこのようなプログラムを書く必要はありませんが。)

Function Kaijyou(n)
If n = 0 then
Kaijyou = 1
Else
Kaijyou = Kaijyou(n-1)*n
End if
End Function

となります。しかし,実は階乗関数は,再帰を使わなくても,
次のように実現することが出来ます。

Function Kaijyou(n)
F = 1
For i = 1 to n
F = F * i
Next i
Kaijyou = F
End Function

↑再帰を使わなくても,次のように実現することが出来ます。
0952デフォルトの名無しさん2015/11/22(日) 18:36:49.01ID:QRD2Q6hy
信頼性が必要なところはレガシーなシステムによって
支えられている。主役はDOSやUnix。64bitは新しもの好きのキモオタしか使ってない。

Windows 3.1の障害によりパリ=オルリー空港が一時閉鎖の事態に
http://gigazine.net/news/20151116-windows-3-1-alive/
0953デフォルトの名無しさん2015/11/22(日) 19:06:23.08ID:fBu/dhDi
レガシーなシステムが、レガシーなままだと思ってるのかな。
それくらいパッチ当ててるよ。
2004年に当ててるベンダーと当ててなかったアホが浮き彫りになったっしょ。
レガシーなシステム語る割には歴史しらんのな。
0954デフォルトの名無しさん2015/11/22(日) 19:16:49.35ID:yPUHF/WV
同じようなレスを繰返すとか、認知症の疑いもあるのか…
早めに病院行けよ w
0955デフォルトの名無しさん2015/11/22(日) 19:38:44.08ID:QRD2Q6hy
爺怖い人に監視されてるー、爺のレス逐一見て爺のこと分析してるー、しかも間違ってるー
爺こわくてもう書き込めなーい
0956デフォルトの名無しさん2015/11/22(日) 19:39:55.27ID:QRD2Q6hy
>>953
2036年が楽しみだな。
俺は予言するよ。インターネットは2036年に崩壊する。
0957デフォルトの名無しさん2015/11/22(日) 20:28:02.04ID:eGBlL0Yy
スレが違うぞ
ゴルァ
0958デフォルトの名無しさん2015/11/22(日) 20:33:44.03ID:QRD2Q6hy
>>957
は? >>937も結局は再帰が原因にあるわけだが? 知恵遅れも大概にしろよ
0959デフォルトの名無しさん2015/11/22(日) 20:58:10.93ID:eGBlL0Yy
インターネット崩壊妄言を信じる
知恵遅れはこの板を去れ
0960uy ◆Qawu9.2l1E 2015/11/22(日) 21:11:26.75ID:i67Ztnvy
レガシーなシステムはレガシーなままだよ
このスレの人たちのようなカスPGが世界中にいて
あろうことかそういう大勢のカスたちによってネットリソース作られてて
尽くハードコーディングするから更新出来ない
0961デフォルトの名無しさん2015/11/22(日) 21:37:21.29ID:eGBlL0Yy
再帰厨のようなカスPGはカスでしかない。

カスはカス。
0962デフォルトの名無しさん2015/11/23(月) 12:59:05.74ID:w0CpmHEa
>>955
>>949
0963デフォルトの名無しさん2015/11/23(月) 13:16:42.22ID:Rh/Dsjk/
>>961
FORTAN77しか使えないおじいちゃん
0964デフォルトの名無しさん2015/11/23(月) 21:10:33.27ID:dBtJs0Pg
再帰嫌いな人はパーサーを書かなきゃいけない時にはどうするのか知りたい。
パーサージェネレータを使ったことがあるなら、コンフリクトエラーだとかambiguousエラーだとかに出くわすたびに、
隔靴掻痒のデバッグをしたことがあるはず。
0965デフォルトの名無しさん2015/11/23(月) 21:28:39.86ID:TysZvHtW
再帰を嫌う必要なんて誰にもないはず。

ただ外に出す商品には、再帰無しに改善しないとね。
遊びや実験じゃあないんだから。

パーサーが再帰がないと書けないなんて考えてるなんて
非常識でプログラミング技術が低過ぎ。
パーサージェネレータで手こずってる段階から、早く抜け出すべき。
0966デフォルトの名無しさん2015/11/23(月) 21:42:40.28ID:FbIB0zhM
>>964
再帰好きの反対が再帰嫌いだと思うなよ馬鹿w
0967uy ◆Qawu9.2l1E 2015/11/23(月) 22:26:15.06ID:QX2C8YaD
才能もないのにプログラミング始めた奴の末路が「再帰読めません」だからw

オブジェクト指向みたいのは努力でどうにかなるけど
再帰やツリーを頭の中でイメージしてコードを書く能力は
経験積んでもゼロな奴は一生ゼロw


wwwwwwwwwwwwwwww
0968デフォルトの名無しさん2015/11/23(月) 22:38:00.61ID:TysZvHtW
>「再帰読めません」

低レベル無能プログラマの妄想だね。
もっとも、こんな発言が出るような下らない所だから
再帰厨のような危険人物が野放しにされてしまうのだろう。
0969デフォルトの名無しさん2015/11/23(月) 22:51:55.10ID:v536Eh0y
最近の言語は末尾再帰最適化が普通だからね
再帰は普通に使われてるよ
0970デフォルトの名無しさん2015/11/23(月) 22:52:33.64ID:dBtJs0Pg
世に出ているgccもclangも再帰下降パーサだって知ってるでしょ?
だから、そういう人はパーサをどう書くの?って聞いてるの。
jsonでもいいよ。どう書くの?
0971デフォルトの名無しさん2015/11/23(月) 22:55:01.99ID:FbIB0zhM
だから何やねん
お前再帰って言いたいだけやろw
0972デフォルトの名無しさん2015/11/23(月) 22:56:36.23ID:8hTjJ7jG
パーサはまだしも、evalみたいな関数は再起無しでどう実装する?
0973デフォルトの名無しさん2015/11/23(月) 23:02:54.56ID:FbIB0zhM
おまえチューリングマシンに再帰があると思ってるのか馬鹿
0974 ◆QZaw55cn4c 2015/11/24(火) 02:26:05.49ID:LPo8dkqj
パーサの再帰回数を制限するくらいしか現実的じゃないな‥
0975 ◆tAo.kQ2STk 2015/11/24(火) 14:36:47.03ID:ge2Zja90
>>964
あぁそうだね、300個の還元/還元衝突だね。
あれは文法を変換したりすれば消すことが出来るよ。
というかCやJavaの仕様書に載ってる文法が(LALR解析表を作る上では)クズすぎるのが原因だから、
同じ文を受理する曖昧性のない文法を導出すれば済む話。
あるいはGLR法を試してみたら?再帰を一切使わず実装できるよ?

>>972
continuationとループを使って実装すれば良いんじゃないかい?

>>973
任意の再帰は、不動点コンビネータが使えるならば、再帰を持たない関数だけで表現できる。
不動点コンビネータは、S関数とK関数、I関数により表現できる。例えばY=S(K(SII))(S(S(KS)K)(K(SII))) (by Wikipedia)
S関数とK関数とI関数はそれぞれチューリングマシン上でエミュレート出来る。
なのでチューリングマシン自体に再帰の機能が無くても、再帰は使える。
0976デフォルトの名無しさん2015/11/24(火) 15:36:37.93ID:vXeBzDQX
>>975
そこで継続とループを使う時点でCPSと何も変わらんでしょ。
0977 ◆tAo.kQ2STk 2015/11/24(火) 16:26:08.92ID:ge2Zja90
>>976
でも正確に「言語が提供する再帰機能」を使わずに実装できるよ!やったね!

ジョークだけどなw
0978デフォルトの名無しさん2015/11/24(火) 16:40:27.57ID:vXeBzDQX
>>977
言語が提供するスタックを使わないから安全である、って馬鹿らしい結論に至るからなぁww

それアセンブラでオレオレ言語のコンパイラでも書いたら?みたいな話になっちゃう。
0979 ◆tAo.kQ2STk 2015/11/24(火) 16:59:59.73ID:ge2Zja90
>>978
まぁループはループで、無限ループ+メモリ確保しまくりのコンボをキメられたら
どの辺が安全なのか分からなくなるけどなww
ガリガリガリガリ現在スワップ使用量20GiBガリガリ

結局の所言語や問題に適した方法を取るのが一番だよな。
手で書くならパースは再帰で、但しASTのevaluationはループ+継続で。

# そういや昔、某和製コンパイラの「ループが時々うまく動かないバグ」に引っかかって
# 仕方なくそこだけ末尾再帰で書き直した事があったなぁ
# (3バイトの前方ジャンプ命令と5バイトのそれのどちらをバイナリに埋め込むべきかという判定のミスで丁度いい長さのループが誤動作する問題)
0980uy ◆Qawu9.2l1E 2015/11/24(火) 18:31:41.35ID:lNjW2jss
f、、、forがあれば再帰いらないじゃん(震え声


wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0981デフォルトの名無しさん2015/11/25(水) 02:57:30.93ID:Qex1VIVs
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0982デフォルトの名無しさん2015/11/25(水) 14:44:52.18ID:DpLrT1vG
繰り返されないものは一瞬に過ぎ去る
何らかのパターンがないと目に見えない
パターンがある場合主題の変奏がその周りにある
パターンは再帰的
再帰は主題を定分ずらした変奏で
それも一つのメタパターンだ
この指で触れられるものを探す
0983デフォルトの名無しさん2015/11/25(水) 19:12:42.88ID:9hpYpU80
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1448404407/-13
0984デフォルトの名無しさん2015/11/25(水) 19:14:45.44ID:n/g2lh6I
はいはい以下無限ループ
0985uy ◆Qawu9.2l1E 2015/11/26(木) 23:16:10.92ID:hdMKEMdm
再帰的なプログラミングとはつまり
原子の中に世界がある という事をソースコード上でやる事です
再帰関数は、それを手繰る為のもの

間違ってもフラットArrayを再帰で辿るとか阿呆な事はしないように
0986 ◆tAo.kQ2STk 2015/11/27(金) 01:09:19.72ID:Bpp9Chxs
> 間違ってもフラットArrayを再帰で辿るとか阿呆な事はしないように
ヒ、ヒープソート
0987デフォルトの名無しさん2015/11/27(金) 12:21:44.47ID:0B5cIfOS
この>>985っていつもこういうこと言ってんの?

再帰が無くちゃならないとは言わないけど、再帰があって便利なのは事実だし、原子の中に世界があるっていう言い方するから悪いだけだろ。マトリョーシカみたいなものなんだから
0988デフォルトの名無しさん2015/11/27(金) 15:51:36.21ID:ssdfMMFk
quicksort
0989デフォルトの名無しさん2015/11/27(金) 16:24:58.15ID:qMqg45bU
繰り返し言われ続けていることだな。

特に特に特にクイックソートは、再帰で実装されたら極端に効率が悪すぎて使えないって。
0990デフォルトの名無しさん2015/11/27(金) 19:59:37.85ID:W/GzBcKS
いやpivot工夫して最悪ケースに陥らないようにしたり、
末端に近くなったらinsert sortに切り替えたり。
実装が単純なのにかなり速い。
0991デフォルトの名無しさん2015/11/27(金) 20:17:09.15ID:hOvgtNbZ
クイックソートみたいなの改めて実装する機会のない、ただの学習用のお題について
語ったところで実りある議論にならないよ
0992デフォルトの名無しさん2015/11/27(金) 20:41:30.81ID:2gRlH9t5
>>990
もはや再帰と関係ない
0993デフォルトの名無しさん2015/11/28(土) 01:01:51.15ID:a4BqYiCD
分割統治法のアルゴリズムは再帰アルゴリズムの典型
0994uy ◆Qawu9.2l1E 2015/11/28(土) 06:18:22.22ID:lBYFUN9m
>>987.setter("低学歴");
0995デフォルトの名無しさん2015/11/28(土) 08:36:18.25ID:09L0m97I
>>993
だから何?
実装に再帰が必要なわけでもなし
0996デフォルトの名無しさん2015/11/28(土) 10:32:57.04ID:M/Wigktg
アルゴリズムと実装の区別も つかない低脳は話に入ってくるなよ…
0997デフォルトの名無しさん2015/11/28(土) 12:24:23.32ID:2xw8Hd1y
>>990のような工夫しないと繰り返しとスタックで実装しても遅い。
0998デフォルトの名無しさん2015/11/28(土) 13:19:43.21ID:Tq6BVuZs
>>997
ライブラリみたいに速度を要求される部分はそう多くない
ほとんどのアプリケーションプログラマにとっては抽象化の方が重要
0999デフォルトの名無しさん2015/11/28(土) 16:27:24.55ID:CrLuhOYh
クイックソートは、問題の無いループ版がライブラリにあって簡単に使えるのに
わざわざ問題のある再帰で書く必要なんてない。

ほとんどのアプリケーションプログラマは、
ループ方式で実装されたライブラリにより高速処理を実現することができる。

無理に無意味に再帰ばかりを使用しようとする再帰厨は、システムの破壊者だね。
1000デフォルトの名無しさん2015/11/28(土) 16:30:38.50ID:CrLuhOYh
再帰のアルゴリズムが理解できたんなら、
それをループ版に直すぐらいのプログラミング能力は備えるべき。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。