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

1デフォルトの名無しさん
垢版 |
2015/11/28(土) 18:51:38.86ID:Rc2MJzM/
なあ、再帰関数好きな人いる?
582NAS6 ◆n3AmnVhjwc
垢版 |
2016/01/05(火) 08:16:57.10ID:FnNfbNzM
>>576-577
も同様に直してね
583NAS6 ◆n3AmnVhjwc
垢版 |
2016/01/05(火) 08:48:45.20ID:FnNfbNzM
recHoge2(term,arg1...argn){
 dobefore(arg1...argn);
 if(term)recHoge2(term,arg1...argn);
 doafter(arg1...argn);
}
この↑再帰関数を無理矢理
loopHoge2(term,arg1...argn){
 while(term){
  pushargstack(arg1...argn);
  dobefore(arg1...argn);
  if(term){continue;}
  popargstack(arg1...argn);
  doafter(arg1...argn);
 }
}
ループで書くのはpushargstack()popargstack()書くのもだし
再帰関数でreturnされた時の箇所で
制御をdoafter()に飛ばすように考えるのもめんどくさい
つまり、再帰関数の構造化の部分までなんでわざわざ
コーディングする必要があるのか謎
2016/01/05(火) 23:45:47.40ID:zRwuHMxA
そうだね、グリーンだね。

任意の再帰はスタックを使えばループに書き直せるし、任意のループは末尾再帰で書き表せるけど
書きやすい方で書いたら良いんじゃない?
配列を舐めるだけのループをわざわざ再帰で書く必要はないし、
二分木を舐めるだけの再帰をわざわざループで書く必要はない。
勿論例外は幾つもあるけどね。
2016/01/06(水) 01:13:15.45ID:kZN9AhFE
死ね → NAS6 ◆n3AmnVhjw
2016/01/06(水) 01:26:34.40ID:2plodUsJ
>>585
語彙少なすぎだろ
2016/01/06(水) 05:38:10.76ID:NwAUbAKq
時間とフィンガーポイントを無駄にしたくない
2016/01/06(水) 11:44:51.16ID:Hrty1iRZ
ばいばい
2016/01/07(木) 03:29:43.72ID:VBUUQOGk
MPC
2016/01/07(木) 14:29:25.41ID:9s+XESwg
>>589
時間とフィンガーポイントを無駄にしない為に今すぐ2chから立ち去るんだ!
さぁ早く!
2016/01/07(木) 23:10:34.37ID:ceukK3gk
またuyが言い負かされてると聞いて
2016/01/08(金) 07:36:31.52ID:37pbuAYe
http://kakaku.com/item/K0000791258/
これを使ってるけど打ちにくい
隙間にゴミが入りにくいキーボードで何か探してくれれば長文レス出来るけど
ゲームもやるから同時押しが出来ないキーボードは使えないんだよ
バッファローのこのキーボード系列は
何故かゲーミングキーボードでもない癖にかなりの同時押しが出来る
お前らもこれくらい社会の役に立ってくれ
2016/01/08(金) 07:58:14.49ID:qSmN42Fw
長文レスなんざしなくていいから死ね
2016/01/08(金) 08:06:15.22ID:t0B3KsjR
ゲームなどという恥ずかしいご趣味をお持ちのようで
2016/01/08(金) 12:51:08.30ID:OGMciHiU
tail callはrecursive callと直行する概念だと理解してないのが何人かいるな
596デフォルトの名無しさん
垢版 |
2016/01/08(金) 12:54:36.23ID:qoujFuKs
直行てなんやねんwてのが何人もいるな
2016/01/08(金) 13:19:39.58ID:39T3KdLp
読みやすい方で書いたらいいんちゃうの?
無理にループにしてソース長くしてテスト項目増やす奴の気がしれんわ
2016/01/08(金) 13:22:10.55ID:39T3KdLp
取り敢えずutがカスだってのは旗から見てわかった

補足しておくけどループで済むものを再起にしろと言ってるわけではないからな
2016/01/08(金) 14:05:20.20ID:qSmN42Fw
そりゃrecursiveじゃないtail callなんざ幾らでもあるわ
2016/01/08(金) 14:44:50.10ID:oo2zXXZh
流し
https://pbs.twimg.com/media/CL3nAldUYAEC9OE.jpg:large
2016/01/08(金) 19:53:25.00ID:XdIzL1DI
仮にもプログラマならHHK使ってます自慢くらいしろよっていう

そういう俺はreal forceだけど。
2016/01/08(金) 22:36:48.34ID:ktsgJ36p
>>595
まっすぐ行ってどうすんねん…
2016/01/08(金) 22:52:34.47ID:Ydps26p4
ワロタ
604デフォルトの名無しさん
垢版 |
2016/01/09(土) 19:28:51.30ID:j10t/SxZ
芸能界で生きていけるレベルの芸だな。
2016/01/13(水) 15:37:06.33ID:KvZEN8k1
自分はプログラマじゃないんだよ
目的を最高効率で達成する事を念頭に置いてるスクリプトキディだ

そして複数人でプログラムを組むときに必要なノウハウなんて持ってない
そもそも自分はそういう事をしなくて良いから、生きてく上で必要無い配慮だから
周りが読みにくいとか知った事ではないし

身分がちげーんだよカス
606デフォルトの名無しさん
垢版 |
2016/01/13(水) 16:53:37.49ID:QjeDGB/s
スクリプトキディの意味も知らないのな
2016/01/13(水) 16:58:20.95ID:4eNfFdO0
(他人の作った)スクリプトを使うしか能の無いお子様

正しく自分のこと理解してるということでいいのかもしれないですね。
608デフォルトの名無しさん
垢版 |
2016/01/13(水) 18:34:23.73ID:QjeDGB/s
正しく自分を理解していたら、あんなバカな生態を晒し続けるわけが無い

スクリプトキディとは、他人の作ったスクリプトでいたずらしてはしゃぐお子様の事だね
2016/01/13(水) 19:01:27.17ID:U6rexLyV
にちゃんに
2016/01/13(水) 19:03:20.75ID:U6rexLyV
誤送信

2ちゃんに書き込んでる地点で効率最悪といえる
2016/01/13(水) 21:24:04.62ID:VbVWsLR9
地点?
2016/01/13(水) 22:25:51.39ID:IMboGSkT
数学的な再帰定義関数は好き
プログラムの再帰定義は多少罪悪感が
2016/01/14(木) 05:26:27.60ID:uv3Ej0dB
身分は再起する
2016/01/15(金) 10:47:33.86ID:u0Mj97aD
>>605
読みやすさを考慮しなくていいとか言うなら、ソースあげんなksが
615デフォルトの名無しさん
垢版 |
2016/01/15(金) 20:31:31.62ID:POz82VxF
まともなプログラムは再帰使わないて
Javaじゃ標準でhashでもvisitorでも使ってるやん
初心者かな?
616デフォルトの名無しさん
垢版 |
2016/01/15(金) 20:52:05.45ID:DNDI2k7a
>>615
ウェブサイトがハッキングされるのはそのせいかもしれませんね。
617デフォルトの名無しさん
垢版 |
2016/01/15(金) 20:59:16.36ID:POz82VxF
ワロタ
何別人ぶってるんだコイツ
618デフォルトの名無しさん
垢版 |
2016/01/15(金) 21:40:58.93ID:bARE8Ecx
Javaがまともじゃないとか何様だよ
619デフォルトの名無しさん
垢版 |
2016/01/15(金) 22:51:22.58ID:DNDI2k7a
Haskellを知ればJavaなんぞ子供のおもちゃにも及ばない。
2016/01/15(金) 22:52:36.63ID:nz6sd5//
でも cloujure が気になるのです‥
621デフォルトの名無しさん
垢版 |
2016/01/16(土) 20:53:37.66ID:mv0cs2FW
データベース扱いにくいゴミ
622デフォルトの名無しさん
垢版 |
2016/01/16(土) 22:18:41.95ID:8IHN4wdz
データベースは扱いにくいゴミだそうです。
2016/01/17(日) 15:36:45.95ID:LBaM8j14
いや、もしかしたら
データベースを扱うのに困難を伴うゴミ人間って意味かも
624デフォルトの名無しさん
垢版 |
2016/01/17(日) 18:00:23.51ID:UWpoaTz9
もしかして、もしかしてだけどさ、Haskelのこと言ってるんじゃね?
2016/01/18(月) 05:28:47.91ID:lC5RiWYz
Haskellほどデータベース扱いやすい言語も少ないからそれはない
626デフォルトの名無しさん
垢版 |
2016/01/18(月) 20:02:16.24ID:DTRfKFLk
世界一のデータベースを持つと言われるGoogleがHaskellで動いているくらいだからね。
2016/01/18(月) 20:42:43.12ID:1d5YkXP9
Haskellって実用で使われてんのかw
おもちゃかと思ってたわw
628デフォルトの名無しさん
垢版 |
2016/01/19(火) 15:31:29.42ID:py3nDmvs
おもちゃだよ
Googleのおもちゃ
2016/01/19(火) 21:26:53.35ID:C1tOs2Eu
この世はおもちゃで十分
2016/01/20(水) 12:31:10.14ID:K5mS7ftq
2ちゃんは漏れらのおもちゃ
631デフォルトの名無しさん
垢版 |
2016/01/20(水) 17:52:59.34ID:Evm4j3E4
漏れらとか使う香具師久しぶりに見たわ
2016/01/20(水) 19:02:11.21ID:aKBKow0I
イッテヨシとかギコはにゃーんとかもう死語なんだろうな。
ゴルァはまだありかな。
2016/01/21(木) 12:48:08.73ID:zpe1QHZ3
ヌルポにはガッっていうのはなぜだったのか理由がいまだに判らないので
香具師にどう反応すればいいのかも判らない
2016/01/21(木) 23:38:12.84ID:C4EemGup
>>633
ぬるぽにかぎらず、例外発生したら、ガッ!
2016/01/22(金) 01:18:00.03ID:G5rv7JJ3
>>633
NullPointerExceptionをぬるぽと呼ぶスレだかなんだかいうスレタイのスレが立った2分後に
2が1にガッしたから

だった筈
2016/01/22(金) 11:22:37.47ID:vIHZAGQE
ヌルポ
637デフォルトの名無しさん
垢版 |
2016/01/22(金) 17:22:39.92ID:AzZButyZ
たたき続けなさい
さすればヌルポは失せるでしょう
2016/01/23(土) 18:27:15.12ID:TOjqi36j
>>636
catch
2016/01/23(土) 18:56:26.79ID:0d2orZXz
>>638
ガッてキャッチのことだったの?
640デフォルトの名無しさん
垢版 |
2016/01/31(日) 18:53:58.36ID:N9Aq8poo
>>638
そしてスローせず
2016/01/31(日) 21:42:25.99ID:OzonL4m2
ガッはガッチャの略だろ。 ガッチャマンでお馴染みのガッチャはI have got you.の略で捕まえたとかの意味。
642デフォルトの名無しさん
垢版 |
2016/02/01(月) 01:42:44.99ID:IP+vl4xQ
でもアメリカのドラマ見てると了解するときにガッチャ!って言ってるよね。
特にチャーリーズエンジェルのカエル顔が(別のドラマでも)言ってるような気がする。
2016/02/19(金) 20:26:15.94ID:wEwKzS1i
再帰使うとエラーの予測が立てにくい
2016/02/19(金) 22:00:01.71ID:eeiEIdAh
それ再帰のせいじゃなくてもともと難しいアルゴリズムなんじゃ
2016/02/19(金) 22:04:28.48ID:jxx0XdOv
再帰の方が簡単に難しいアルゴリズムを作れる
2016/02/19(金) 22:41:27.96ID:wEwKzS1i
同じコードでも言語やバージョンの違いで即死する可能性があるのがネック。
可能ならwhileにするよ。
どうでもいいスクリプトなら木にしないけど。
べ、別に再帰関数苦手なわけじゃないんだからね!
2016/02/24(水) 00:10:47.14ID:i1Xglt1a
再帰否定する奴は局所変数も否定すんの?
648uy ◆Qawu9.2l1E
垢版 |
2016/02/25(木) 06:44:19.41ID:loCQbBq3
再帰否定派は生きるのがつらいんだよ
いつも周りのもの何もかも否定してるよ
2016/02/25(木) 12:35:19.93ID:tc7lGvfi
無限か有限かを判別するだけでも難しい再帰コールが簡単に作れるからな
2016/02/25(木) 22:13:06.90ID:OuMkr9Sq
ループなら無限か有限か簡単に判別できるとでも?
2016/02/26(金) 03:25:44.03ID:VdCPJ0Vc
再帰の方が簡単に作れる
2016/02/26(金) 03:33:16.76ID:VdCPJ0Vc
例えば再帰を使えばC++149文字で数学的に非常に判別が難しいコードが作れる
ステップ数がF_φ_ω(0) (n)のオーダー
再帰を使わないともっとずっと必要な文字数は増える
653デフォルトの名無しさん
垢版 |
2016/02/26(金) 12:24:24.63ID:x5+an1W2
つまり再帰を使うと簡単に分かりにくいコードが書けてしまうというアピール

アホなのこいつ?
2016/02/26(金) 12:55:19.99ID:V8jyQAYV
まともなプログラマーしかいなけりゃ問題ないよ
2016/02/26(金) 20:22:01.88ID:KBsVtPlI
適材適所

まぁ、ループは現代ではほとんど高階関数に置き換えられてはいるが
2016/02/26(金) 20:31:47.39ID:VdCPJ0Vc
そうか?
2016/02/27(土) 09:47:03.89ID:GGk6IaQQ
再帰、ループ、高階関数は互いに別カテゴリーの概念だけどな。
2016/02/27(土) 13:35:50.10ID:wN2C/qqy
>ループは現代ではほとんど高階関数に置き換えられてはいるが

mapとかfoldって言いたいの?
2016/02/29(月) 09:52:02.11ID:+UQXiICf
ファンクショナルのことだろ
2016/02/29(月) 12:09:46.90ID:gY4tu7UX
Yコンビネータの事かも
2016/03/05(土) 08:19:26.32ID:C1oJ0ySj
最近の言語は分かり易いから好んで使う人多いみたいだね。

俺はダメだわ。単純な再帰でもアセンブラ時代の間接修飾と再帰を混合で使ってたときのトラウマが・・・
2016/03/05(土) 13:03:33.56ID:4AspLwzf
スタック使うから組み込みでは禁則かな
2016/03/05(土) 16:01:56.83ID:Xc1YGBo+
末尾呼びにすればぁ?
2016/03/06(日) 13:58:13.11ID:9mzH85Ox
無理して使う物ではないのは、確か。
665デフォルトの名無しさん
垢版 |
2016/03/07(月) 19:41:03.81ID:0qoaCMqF
今更だけどアッカーマンの展開ループです
https://ideone.com/dKocyf

これループに直せません?
https://ideone.com/Ub1M86
2016/03/07(月) 20:15:13.20ID:X8YwrOCo
>>665
ループ,というよりは map によるメモ化を先にするべきかと思う
2016/03/07(月) 20:44:00.00ID:ouSCK2N5
アッカーマンメモ化はやめとけ
メモリ使用量がシャレにならん。
小さい引数ならいいけど。
2016/03/07(月) 23:04:02.15ID:ouSCK2N5
と思ったけどスタック消費量は逆に減る?
よくわからんくなってきた。
669デフォルトの名無しさん
垢版 |
2016/03/07(月) 23:55:21.18ID:DhnnCcYX
>>668
アッカーマンはメモ化意味ない
2016/03/08(火) 06:31:35.48ID:mBS7w7C0
しかしヤッターマンならきっとやってくれる
2016/03/09(水) 19:45:38.58ID:8kThrIH6
>>669
それはありえない.
アッカーマン関数にメモ化は有用な手段
http://echo.2ch.net/test/read.cgi/tech/1434079972/14
2016/03/15(火) 20:46:33.65ID:Ar6pzjDU
メモ化とかメモリリークしてるに等しい欠陥技術でしょ。
2016/03/15(火) 20:54:37.80ID:RIoPtDsj
>>672
fjの昔からの議論をここで蒸し返しますか?
2016/03/25(金) 20:10:31.18ID:ARWxn+lM
再帰というソフトにはスタックというハードがあるけどほかのソフトをハードで実装するのはどうなの?
GCとかハードで実装してまったくフリーズなしに出来ないの?
2016/03/27(日) 16:40:13.75ID:WR+Y3fPV
int main(){return main();}
2016/03/31(木) 20:21:06.47ID:qF1fcJk9
とあるRubyスクリプトだけどこれと等価のC書けんの?

$f=lambda{
print "f";
return $g
}

$g=lambda{
print "g"
return $f
}

a=$f
10.times{a=a.call}
677デフォルトの名無しさん
垢版 |
2016/03/31(木) 20:26:53.36ID:+v8smRGz
rubyはcで書かれているんやで知らんかったやろ?
2016/03/31(木) 20:35:19.21ID:qF1fcJk9
そういう等価じゃなくて文法的にというか。
Cだと$fと$gの型をどうしていいかわからん。
2016/03/31(木) 21:08:44.15ID:qF1fcJk9
グローバル変数じゃなくてもこれでいけるっぽい

g=nil

f=lambda{
print "f";
return g
}

g=lambda{
print "g"
return f
}


a=f
10.times{a=a.call}
680デフォルトの名無しさん
垢版 |
2016/03/31(木) 21:11:44.63ID:+v8smRGz
typedef void *(*F)()でいいやんけ
2016/03/31(木) 21:15:14.22ID:qF1fcJk9
まじで
やってみる
2016/03/31(木) 21:20:03.99ID:qF1fcJk9
やりかたわからん。
コンパイル通るソースプリーズ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況