- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
499 :デフォルトの名無しさん[]:2015/10/12(月) 09:22:45.43 ID:5OGIyOb6 - >>494
それは俺も思う。無限ループでCPU100%応答なしで強制終了するしかなくなるよりも 例外投げてくれた方がよほど処理しやすい。例外は捕まえて回復可能だけれども 応答しなくなったら回復不能。安全のために再帰を選択するってのもありだと思う。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
501 :デフォルトの名無しさん[]:2015/10/12(月) 09:24:49.72 ID:5OGIyOb6 - >>498
スタックがオーバーフローすると処理を継続できなくなるようなことってなかったっけ? そういうときにオーバーフローする前にセーフティで例外投げるのは全然ありでしょ。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
502 :デフォルトの名無しさん[]:2015/10/12(月) 09:30:43.28 ID:5OGIyOb6 - >>500
それはロジックを見なおすべきかと。 無限ループであっても現実的にはこれくらいしか回らないだろうって いう見積があるわけで、再帰を使うのであれば見積もり通りなら スタックオーバーフローにならないだろうってところで使うべきでしょ。 スタックオーバーフローになるロジックを書いてスタックオーバーフローになりました。 再帰は使えません、っていうのじゃあ自作自演だよね。室内でオイルライター使って お部屋丸焼きにするおじさんとやってること変わらないよね。ループ厨は丸焼きおじさんだよね。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
505 :デフォルトの名無しさん[]:2015/10/12(月) 09:41:15.84 ID:5OGIyOb6 - >>503
無限ループはロジックのバグとしてあるよ。 どこだったかな、昔どっかで見た覚えがあるんだけど ニコニコ動画か、はてなだったかと思うんだけど whileで無限ループ作って条件を指定してループから 抜けだすっていうふうに書いていたんだけど、条件が 満たされないケースがあってサービス不能に落ちいった。 これは失敗だった。forでループの上限を書くべきだったって いう内容だったんだよね。再帰を使えばそういうの意識できるし、 例外を捕まえればサービスの回復も図れるのさ。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
507 :デフォルトの名無しさん[]:2015/10/12(月) 09:47:27.38 ID:5OGIyOb6 - >>506
無限ループはロジックの修正で回避できます。 再帰のオーバーフローもロジックの修正で回避できます。 やることは変わらないと思うけどなあ。 むしろ再帰を使えば再帰呼出しの回数を意識する分、ロジックは洗練されそう。 バブルソートで延々処理を待つよりも、マージソートでさっさと終わらせちゃった 方が良いでしょ。ロジックを見直すって大事なこと。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
509 :デフォルトの名無しさん[]:2015/10/12(月) 09:58:25.02 ID:5OGIyOb6 - あるディレクトリの中をサブディレクトリも含めてクリアしたい時。
理屈としてはスタックオーバーフローに達するほどのサブディレクトリが存在する可能性 を否定できないけれども、現実的にはほとんどない。 だから再帰処理で片付けられる。結構こういうことってあると思うんだよな。 再帰を使うことは現実的な落とし所を探る堅実なプログラミング。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
511 :デフォルトの名無しさん[]:2015/10/12(月) 10:09:15.52 ID:5OGIyOb6 - >>510
仕事でも十分ありえるよ。 むしろ仕事の方が縛りやすいっしょ。仕様という名の強力な 鎖があるんだから縛っちゃえばいい。このディレクトリの下には N階層までしか作りません、作っちゃいけませんって決めればいい。 ディレクトリの深さに期待する人なんていないっしょ。いたとしても そんな一部の変態のためにプログラムを合わせるなんて非現実的、 変態は切り捨てるべきだし、汚物は消毒すべき、現実的な落とし所を探るってそういうこと。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
515 :デフォルトの名無しさん[]:2015/10/12(月) 10:22:02.92 ID:5OGIyOb6 - >>512
データの不整合で無限ループになることもあるよね。 木構造で顧客管理するシステムで入力ミスって無限再帰で スタックオーバーフローにしたことあるわー、月一回の締め処理で発覚したわー、 ユーザからまだ処理終わらないんですかと催促来て、必死こいてデータチェックしたわ−。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
518 :デフォルトの名無しさん[]:2015/10/12(月) 10:56:58.14 ID:5OGIyOb6 - >>516
データにもプログラムにも問題がないなら ロードテストやストレステストをパスするかでシステムが要件を満たすかはわかるっしょ。 テストで十分カバーできると思うけどなあ。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
531 :デフォルトの名無しさん[]:2015/10/12(月) 13:24:26.04 ID:5OGIyOb6 - >>529
そういえばシェルスクリプトっていくら再帰しても スタックオーバーフローにならないよね。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
536 :デフォルトの名無しさん[]:2015/10/12(月) 13:43:16.47 ID:5OGIyOb6 - >>533
シェルスクリプトのいいところは単純な関数呼び出しで それが実現できてるところだよなあ。 exeを呼ぶっていうのは違うかな。指定した関数を別プロセスで実行するって いう仕組みが欲しい。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
541 :デフォルトの名無しさん[]:2015/10/12(月) 14:03:17.14 ID:5OGIyOb6 - >>537
あれ、ホントだ。 8千回くらいでsegmentation faultになった。 なんか勘違いしてた。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
546 :デフォルトの名無しさん[]:2015/10/12(月) 14:25:47.82 ID:5OGIyOb6 - >>543
segmentation faultにならないようにロジックを修正するべき。 たとえば50%の確率で表を返して50%の確率で裏を返すジャッジメント関数があって 表が出るまでその関数を呼び出すという処理があったとして、8千回も裏が出続けたら 不正でしょ。不正はなかっただなんて言えない状況でしょ。ロジックが間違ってるでしょ。 ループで書いてたらいつまで立っても処理が終わらない状況ですよ。再帰使ってて 良かったねって思える状況ですよ。不正を暴けてよかったって状況ですよ。 君の正義感に訴えたい。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
547 :デフォルトの名無しさん[]:2015/10/12(月) 14:27:29.38 ID:5OGIyOb6 - >>534
ホントだ、すくなくともtreeは再帰で実装されてた。
|
- ★★Java質問・相談スレッド174★★ [転載禁止]©2ch.net
900 :デフォルトの名無しさん[]:2015/10/12(月) 14:52:45.68 ID:5OGIyOb6 - >>899
newInstance()の戻り値は使われてないね。newInstance()がなくても動くはずよ。 Class.forNameしたときにOracleDriverのstaticイニシャライザが呼ばれてその中で ドライバのインスタンスが作成されてDriverManagerに登録される。 Class.forNameとnew OracleDriver()は、ドライバを文字列で示すか、 識別子で示すかの違いでしょね。文字列で示すと、外部のファイルから その文字列を受け取るようにしておけばプログラムを変えずにドライバを 入れ替えることができる。DBを変える予定ないんてないし、ドライバも変えません ってことならnew oracle.jdbc.driver.OracleDriver()でも問題ないかと。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
550 :デフォルトの名無しさん[]:2015/10/12(月) 14:57:35.06 ID:5OGIyOb6 - >>548
ふむり、10回、20回なら再帰でもスタックオーバーフローにならないだす。 これで心置きなく再帰使えるます。
|