トップページ > プログラム > 2015年10月12日 > gvhM2OV1

書き込み順位&時間帯一覧

7 位/137 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000002100400000000007



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net

書き込みレス一覧

なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
497 :デフォルトの名無しさん[sage]:2015/10/12(月) 09:01:39.37 ID:gvhM2OV1
>>492
> 再帰はバグがなくてもスタックオーバーフローで死ぬ
これも含めてバグだと思うけどね。
"再帰の深さ数えといて明らかに異常なときは"的な処理を入れとけばいいんじゃね?
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
508 :デフォルトの名無しさん[sage]:2015/10/12(月) 09:55:34.70 ID:gvhM2OV1
>>506
> 無限ループは、元々正しくないコードなので
> 本来の目的とするコードに直せば問題なし。
元々正しいコードであってもスタック足りなくなるような処理に、
再帰を使うべきでないというのは俺も同意見だが。
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
512 :デフォルトの名無しさん[sage]:2015/10/12(月) 10:11:25.69 ID:gvhM2OV1
たとえばディレクトリツリーを解析するアルゴリズムで、
途中に親ディレクトリのリンクが混じってると、
無限ループになったり、スタック足りなくなったりする可能性あるけど、
それを含めてバグであって、
そのようなバグを回避手段を用意することにおいて本質的な違いは無いと思う。

後、会社の中でとか限られた状況で
 再帰禁止
とかローカルルールを設定することに何も反論はないし、
そうした方がいい環境やケースもあるだろう。
ただ、掲示板のような不特定多数に向けて
 再帰はダメ
見たいな論調はどうかと。
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
529 :デフォルトの名無しさん[sage]:2015/10/12(月) 13:04:27.92 ID:gvhM2OV1
例として
 カレントディレクトリ以下の全てのファイルを全て表示する
スクリプト書くけど、
こういう場合もダメってことなのかね。
再帰使わないで書くとすごく面倒になると思うけど。
#!/bin/csh
set iPath = '.'
if $#argv then
set iPath = $1
endif
foreach iFile(`ls $iPath`)
echo $iPath/$iFile
if -d $iFile then
$0 $iPath/$iFile
endif
end
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
530 :デフォルトの名無しさん[sage]:2015/10/12(月) 13:14:33.36 ID:gvhM2OV1
本質とは関係ないけど例に挙げたスクリプトバグあったわ。
下記ね
if -d $iPath/$iFile then
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
534 :デフォルトの名無しさん[sage]:2015/10/12(月) 13:33:29.14 ID:gvhM2OV1
>>533
find や tree の実装はきっと再帰になってるよ。
なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
540 :デフォルトの名無しさん[sage]:2015/10/12(月) 13:58:48.22 ID:gvhM2OV1
スレタイが再帰"関数"になってるのか。
そういう意味で >>529 は例としてふさわしくないね。
Cとかで例挙げるとゴチャゴチャした余計なもの書かなきゃならないんで、
 再帰使わないと非常にメンドウな挙げたかった
というのが主張の本質と捕らえて欲しい。
後、確証バイアスに陥らないように。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。