なあ、再帰関数好きな人いる? [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001名無しのプログラマ
2015/08/09(日) 17:46:33.69ID:Icb40LOY皆から敬遠されてる気がする
0153デフォルトの名無しさん
2015/08/13(木) 03:39:48.62ID:WDxyRHhaあっても隠蔽するから両手で数えられるほどしか無い。
片手でもいけるかもw
0154デフォルトの名無しさん
2015/08/13(木) 03:51:07.78ID:NebXzry6私はそこまで一般化はしてないですし、適材適所も否定してません
それと必要性の比較も関係ありませんよ
例えばgoto文も適材適所ですが、必要性は低いと思ってます
再帰がループと同程度に必要と思うなら、そう言ってくれればいいです
違う場合に、その先の話がしたいだけなので
0155デフォルトの名無しさん
2015/08/13(木) 04:15:21.85ID:NebXzry6どうあっても再帰は不要といいつつ、ループが必要とは言わないんですね…
0156デフォルトの名無しさん
2015/08/13(木) 04:27:48.44ID:WDxyRHha実践では再帰はあまり使いません。
必要性の話をするのなら
それが現実では?
0157デフォルトの名無しさん
2015/08/13(木) 07:42:46.93ID:GBQWWFg+0158デフォルトの名無しさん
2015/08/13(木) 07:48:57.17ID:FXSompvo0159デフォルトの名無しさん
2015/08/13(木) 08:21:16.88ID:Iax2S8IU実用的なクイックソートはループ。
まさか再帰でしか実現できないなんて考えとるんか?
0160デフォルトの名無しさん
2015/08/13(木) 08:52:19.31ID:GBQWWFg+再帰より可読性の高い、ループでのクイックソートの実装は寡聞にして知りません。
0161デフォルトの名無しさん
2015/08/13(木) 09:30:01.18ID:Iax2S8IU特別なことはやらないから、誰でもすぐ実現できるはず。
Cどころか昔のVBのようなへぼ環境でも
何百万ものデータを高速にソートできてしまう。
0162デフォルトの名無しさん
2015/08/13(木) 09:53:04.16ID:GBQWWFg+https://github.com/lattera/glibc/blob/master/stdlib/qsort.c
本来の再帰アルゴリズムを、非再帰で記述するために状態を自前のスタックで管理しなきゃならない。
余計なコードが必要な分、可読性は低いですね。
0163デフォルトの名無しさん
2015/08/13(木) 10:07:42.74ID:Q4WJ33HHFSF、Microsoft、そしてAppleが再帰を避けるのは何故か考えてみては。
0164デフォルトの名無しさん
2015/08/13(木) 10:10:35.79ID:wsd38m6Jどっちでもいいよ。
金太郎飴をループで切るか再帰で切るか、程度の話しかしてない
みたいだしな。その関数がその構造のどこまでのデータを扱うのか
ってことを意識してりゃ別にいい。
再帰でよその子をいじったりとかするのは馬鹿のやること。
0165デフォルトの名無しさん
2015/08/13(木) 10:13:00.13ID:1x08JE5T>>162は可読性について論じているのに
0166デフォルトの名無しさん
2015/08/13(木) 10:27:03.54ID:Q4WJ33HHわざわざglibcのソース引っ張り出してるとこからして、本人も言いたいことが自分で分かっていないのでは?
Cで再帰するコードを書けば、たいていのチェッカが警告するし、品質保証からお叱りを受けるはず。
やってはいけないことの一つとして、ほとんどの企業で明文化されているはずです。
そして良く知られるMISRA-Cも通りません。
こういう状況下で、glibcのソースを引用して再帰するべきと主張するのはおかしい。
glibcでも再帰は避けている、再帰するべきでないという主張になるのが当然だと思う。
そうなっていないという事は、本人が一番自分の主張をわかっていない。
と思うのです。
0167デフォルトの名無しさん
2015/08/13(木) 10:30:12.83ID:NebXzry60168デフォルトの名無しさん
2015/08/13(木) 10:30:37.05ID:Iax2S8IU再帰の場合よりも良くなくてはいけないと?
理解困難なコードでなく実用性があるのなら採用するでしょ。
プログラマはソート処理のコードは使いまわして
比較関数を用意すればいいだけだし。
0169デフォルトの名無しさん
2015/08/13(木) 10:32:46.72ID:GBQWWFg+可読性の話をしてるんですが?
0170デフォルトの名無しさん
2015/08/13(木) 10:38:27.46ID:WDxyRHha> 本来の再帰アルゴリズムを、非再帰で記述するために状態を自前のスタックで管理しなきゃならない。
だから適切なものを選べって言ってるじゃん。
誰が、再帰が適切なものまで、
ループにしろって言ったよ?
ループで済むものを再帰でやるなって話。
ほんと>>41で書いた4の段階のやつだなお前は。
0171デフォルトの名無しさん
2015/08/13(木) 10:40:07.80ID:WDxyRHha> プログラマはソート処理のコードは使いまわして
> 比較関数を用意すればいいだけだし。
そういう場合、そのソートは何に使われるかわからないから
往々にして、速度が一番早い方法を選ぶんだよね。
つまりループで実装。
0172デフォルトの名無しさん
2015/08/13(木) 10:41:21.58ID:A9RCljrX可読性の基準が変わってくるでしょ
再帰で触感的に記述できるのは再帰構造持ったアルゴであって
本来行うべき実行じゃないから非直観的なんよ
可読性として表現したい対象がそもそも違うのよね
0173デフォルトの名無しさん
2015/08/13(木) 10:42:13.58ID:96XWMJC8スタックオーバーフローを検出して適切にエラー処理するために自前のスタックにするとかは普通にあるし
0174デフォルトの名無しさん
2015/08/13(木) 10:43:10.07ID:NebXzry6中身ちゃんと読んでますか?
このソース要素数が一定以上の場合、どうやらquicksortしない仕様で、
quicksort処理部もスタック使ってるようですよ
要素数で分けて安全性を保っているだけで、
処理そのものの安全性そのものは再帰と変わってません
0175デフォルトの名無しさん
2015/08/13(木) 10:47:32.08ID:Iax2S8IU何言っとるんだ?
0176デフォルトの名無しさん
2015/08/13(木) 10:47:43.55ID:WDxyRHha> ソースがコンパイラにどう最適化されて実行時にどう動かされるかを考えてると
> 可読性の基準が変わってくるでしょ
可読性の読みやすさって
人間の読みやすさだからw
コンパイラにとっては可読性関係ないよ
どんなに読みづらいコードでも
書いてあるとおりに解釈してくれる。
0177デフォルトの名無しさん
2015/08/13(木) 10:48:35.29ID:Q4WJ33HH自前のスタックを使っています。
確かにあなたのおっしゃる通り*自前の*スタックを使っています。
ですが再帰ではありません。
0178デフォルトの名無しさん
2015/08/13(木) 10:48:36.95ID:Q4WJ33HH自前のスタックを使っています。
確かにあなたのおっしゃる通り*自前の*スタックを使っています。
ですが再帰ではありません。
0179デフォルトの名無しさん
2015/08/13(木) 10:51:04.09ID:Q4WJ33HH明文化された事実なんですよ。
手間がかかろうがなんだろうが、再帰を無くさなければならない。
そんなこと当たり前じゃないですか。
0180デフォルトの名無しさん
2015/08/13(木) 10:51:19.49ID:GBQWWFg+glibcのqsortでもstack_node stack[STACK_SIZE]が溢れますね。
メモリ消費量は、再帰で書くとそれに加えて、リターンアドレスやフレームの保存領域が余計に必要になるだけですよね。
0181デフォルトの名無しさん
2015/08/13(木) 10:53:38.16ID:Q4WJ33HHじゃあ品証にそう言って噛みついてみては?
0182デフォルトの名無しさん
2015/08/13(木) 10:55:16.00ID:Q4WJ33HH0183デフォルトの名無しさん
2015/08/13(木) 11:01:18.21ID:Iax2S8IUこれは指定の番号のデータが、ソート結果として
第何番目になるかを出力させるといい。
つまり順番に数値を格納した配列を用意して
その要素をクイックソートの置き換え処理の対象にさせる。
また、比較関数もこれに対応したものを用意する。
この方式なら
int stack[STACK_SIZE]
を用意すればいいので、件数は多くても
メモリ消費量はそんなに必要にならない。
0184デフォルトの名無しさん
2015/08/13(木) 11:01:20.46ID:GBQWWFg+>>53が言い出した「再帰は可読性が悪い」に対する反論なのですが。
0185デフォルトの名無しさん
2015/08/13(木) 11:01:38.29ID:NebXzry6コメントとMAX_THRESHで追えば解ると思います
全くしないわけではないです
0186デフォルトの名無しさん
2015/08/13(木) 11:13:50.27ID:GBQWWFg+非再帰版は再帰を自前のスタック管理でエミュレートしているだけなんだから、
同一データを、再帰版と非再帰版で実行すると再帰版の再帰の深さと、
非再帰版のstackの使用個数は同じになるに決まってるじゃないですか。
0187デフォルトの名無しさん
2015/08/13(木) 11:15:13.87ID:1x08JE5TOSとかの制作には向いてないってことで
普通のソフトならオーバーフローしない限り問題ない
0188デフォルトの名無しさん
2015/08/13(木) 11:22:16.59ID:Q4WJ33HH使いません。
0189デフォルトの名無しさん
2015/08/13(木) 11:24:47.30ID:Q4WJ33HHよく使われるガイドライン、規約で明示的に禁止されています。
C/C++で再帰は邪悪なのです。
再帰を使う人は悪人です。
0190デフォルトの名無しさん
2015/08/13(木) 11:26:18.86ID:1x08JE5T0191デフォルトの名無しさん
2015/08/13(木) 12:51:43.10ID:GBQWWFg+ウソつき。 禁止してるのってMISRA-Cだけですね。
CERT C Secure Coding Standard
Recursion can also lead to large stack allocations. Recursive functions must ensure that they do not exhaust the stack as a result of excessive recursions.
ISO/IEC TR 24772:2013
6.37.5 Avoiding the vulnerability or mitigating its effects
Software developers can avoid the vulnerability or mitigate its ill effects in the following ways:
+ Minimize the use of recursion.
+ Converting recursive calculations to the corresponding iterative calculation.
In principle, any recursive calculation can be remodeled as an iterative
calculation which will have a smaller impact on some computing resources but
which may be harder for a human to comprehend.
The cost to human understanding must be weighed against the practical
limits of computing resource.
+ In cases where the depth of recursion can be shown to be statically bounded
by a tolerable number, then recursion may be acceptable, but should be
documented for the use of maintainers.
0192デフォルトの名無しさん
2015/08/13(木) 12:54:40.29ID:V/aggySn0193デフォルトの名無しさん
2015/08/13(木) 13:05:26.51ID:WDxyRHha0194デフォルトの名無しさん
2015/08/13(木) 13:06:35.36ID:t3mydoM30195デフォルトの名無しさん
2015/08/13(木) 13:12:01.20ID:WDxyRHha0196デフォルトの名無しさん
2015/08/13(木) 13:12:01.28ID:A9RCljrX糞みたいな本のコピペ宣伝がくるね
0197デフォルトの名無しさん
2015/08/13(木) 13:13:19.26ID:WDxyRHhaそれは、押すなよ、押すなよってやつですか?
それとも自分でコピペして、ほら俺の言ったとおりだった(ドヤ顔)を
やるための布石ですか?
0198デフォルトの名無しさん
2015/08/13(木) 13:13:33.60ID:GBQWWFg+これに異論はありますか?
0199デフォルトの名無しさん
2015/08/13(木) 13:14:50.27ID:aB+CmHXzループは再帰で表現するのが推奨
Scala特有とか意味わからん
0200デフォルトの名無しさん
2015/08/13(木) 13:19:18.15ID:WDxyRHha中途半端な質問するなよw
クイックソートは再帰版の方が可読性が高い。
バブルソートは再帰版の方が可読性が高い。
マージソートは再帰版の方が可読性が高い。
これに異論はありますか?
やるならこれぐらいやれよw
その言い方だとクイックソートだけしか勝ち目がないと
自覚しているかのようだぞ。
なお、ソートの種類には以下の様なものが有るらしい。
https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%88
バブルソート、シェーカーソート、コムソート、ノームソート、選択ソート、挿入ソート
シェルソート、2分木ソート、ライブラリソート、マージソート、In-place マージソート
ヒープソート、スムースソート、クイックソート、イントロソート、ペイシェンスソート
ストランドソート、奇偶転置ソート、シェアソート
半分も知らんなw
0201デフォルトの名無しさん
2015/08/13(木) 13:20:57.51ID:WDxyRHha推奨とか、破壊的代入を禁止するという制約のために
選択肢がないだけに見えますが。
破壊的代入を禁止することが、
必ずしも可読性を高めるとは限らないので。
0202デフォルトの名無しさん
2015/08/13(木) 13:24:34.58ID:NebXzry6fold mapでループは消えますので、再帰より不要ですね(煽り)
0203デフォルトの名無しさん
2015/08/13(木) 13:27:20.56ID:WDxyRHhafold mapによって消えるものがなぜループだと?
fold mapによって再帰が消えるのではないのですか?
0204デフォルトの名無しさん
2015/08/13(木) 13:28:32.66ID:W1EX3EBl自覚してるんでしょうね(煽り)
0205デフォルトの名無しさん
2015/08/13(木) 13:30:40.85ID:GBQWWFg+>>53
> 普段はやはり再帰のコードは書くべきじゃないよ。
> 可読性悪いからね。
これが間違いであることは、反例を1つ示せば十分ですよね。足りないというなら、
ID:Q4WJ33HH氏がドヤ顔で言い出したISO/IEC 24772:2013にも
In principle, any recursive calculation can be remodeled as an iterative
calculation which will have a smaller impact on some computing resources but
which may be harder for a human to comprehend.
The cost to human understanding must be weighed against the practical
limits of computing resource.
って明記されてるし。
0206デフォルトの名無しさん
2015/08/13(木) 13:34:22.81ID:W1EX3EBl普段に当てはまらない場合は違うと言ってるわけで、
反例があるってことは、最初から言ってることですね。
0207デフォルトの名無しさん
2015/08/13(木) 13:43:25.91ID:GBQWWFg+その「普段」は発言者の彼によると、「再帰を繰り返しに置き換える」ので、クイックソート非再帰版が「普段」ですよね。
> 再帰を使うことはめったにない。そしてミスをしやすい所でもある。
> だから再帰を使うときは、再帰を考慮しなくていい形に置き換えるようにしている。
0208デフォルトの名無しさん
2015/08/13(木) 13:44:15.15ID:W1EX3EBlその発言者は私ですが、普段というのは
日々の仕事の話ですよw
普段あなたは何をしてるのですか?
の普段です。
0209デフォルトの名無しさん
2015/08/13(木) 13:47:30.00ID:W1EX3EBl普段はクイックソートの実装などせずに
予め用意されたソート関数、つまり高階関数を引数にしたソート関数を
呼び出すだけなので普段は再帰を使ったコードを書きません。
>>202の発言風に言うと、
sortで再帰は消えますので、再帰は不要ですね(煽り)
0210デフォルトの名無しさん
2015/08/13(木) 13:47:49.82ID:GBQWWFg+「普段」はクイックソートのように再帰版の方が可読性の高いものを、非再帰版に書き直さないのですか?
0211デフォルトの名無しさん
2015/08/13(木) 13:50:17.90ID:W1EX3EBl普段は再帰は可読性が低いので、
再帰だとわからないように
sort関数のようなものを作ります。
再帰が可読性高かったら、
わざわざsort関数なんて作りませんよw
0212デフォルトの名無しさん
2015/08/13(木) 14:02:03.63ID:GBQWWFg+再帰版クイックソートは可読性が低いという主張ですね。
>>206と矛盾しますが。
> 普段に当てはまらない場合は違うと言ってるわけで、
0213デフォルトの名無しさん
2015/08/13(木) 14:09:44.52ID:NebXzry6え…?再帰構造にmap使うんですか?
かなり効率悪いと思いますが
0214デフォルトの名無しさん
2015/08/13(木) 14:23:38.44ID:W1EX3EBlえ?そんな話してませんよ。
話の内容を整理しましょう。
fold mapによって消えるものがなぜループだと
思っているということは、fold mapが再帰ではなく
ループで実装されていると思っているからでしょう?
fold mapを使えば、ループが要らないっていうのはそういうことですね。
もしfold mapの中身が、ループではなく再帰で実装されていると思っているのなら、
fold mapで消えるのは再帰だと考えるはずです。
だから、ははん、こいつはループを使ったほうが適切な問題だって
わかっていると言ったんです。
最初っから言ってるように、適切なものを使う。
単なるリスト構造であればループで良い。
再帰的な構造であれば再帰使えばいいと言ってます。
0215デフォルトの名無しさん
2015/08/13(木) 14:27:29.97ID:W1EX3EBl> 再帰版クイックソートは可読性が低いという主張ですね。
全く違います。
再帰を使ったコードは可読性が低いので、
sort等の関数を使って再帰を隠蔽するというのが
私の主張です。
何回も説明したはずですが?
「普段」というのは>>208で書いたように、
日々の仕事のことですから、普段は再帰は使いません。
使うことがあっても内部で隠蔽されたsort関数などを使うし、
自分で隠蔽するので、普段は再帰は使いません。
0216デフォルトの名無しさん
2015/08/13(木) 14:29:35.52ID:NebXzry6>思っているということは、fold mapが再帰ではなく
>ループで実装されていると思っているからでしょう?
全然違います
ループに代替可能、かつ効率が上がる可能性があるからです
mapの実装がループって…ループや再帰で実装はできますが、
逐次処理に書き下したらmapの優位性なくなりますよ
その下は間違った前提で話してるのでスルーします
0217デフォルトの名無しさん
2015/08/13(木) 14:31:12.41ID:NebXzry6間違い訂正:ループに代替可能 → ループを代替可能
0218デフォルトの名無しさん
2015/08/13(木) 14:39:15.29ID:W1EX3EBlもしかして、mapの実装をmapで書いてると言った人ですか?w
mapというのは写像のことです。
f: A → B のことです。
プログラミング的に書くならば、
B = f(A) という形になってないとmapではありません。
ループもしくは再帰でmapを実装するのですよ。
もっともこの場合は、ループで実装するのが適切だから
再帰は使いません(何度も私が言ってます。道具は適切に使いましょう。)
そして逐次処理に書き下しするって何の話してるのですか?
逐次処理の反対は並列処理ですが、今並列か逐次かの話なんかしていましたかね?
ループも再帰も逐次処理ですし。
0219デフォルトの名無しさん
2015/08/13(木) 14:49:38.43ID:NebXzry6mapはあなたの言う通りただの写像ですから、
それだけで逐次か並列かを縛るものじゃないですよ
再帰処理という意味なら、必然的に並列化して分割統治できるので、
どう見ても再帰が有利ですね
0220デフォルトの名無しさん
2015/08/13(木) 14:52:27.40ID:t3mydoM3いやだからリストは最も基本的な再帰的なデータ型だから。。
木より
0221デフォルトの名無しさん
2015/08/13(木) 14:56:24.24ID:W1EX3EBl全てのループは再帰で変換可能なので、
全てのループは並列化して分割統治できるということになりますが?
何度も言ってるように、適切なものを使いましょう?
ループを使ったほうが良い場合は
わざわざ再帰にする必要はないのですよ。
ちょっと出かけなきゃならないので、wikipedia貼って終わらすけど、
再帰だからって並列化できるとは限りません。
https://ja.wikipedia.org/wiki/%E4%B8%A6%E5%88%97%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
再帰的でありながら並列化が非常に難しい問題もある。例えば、グラフにおける深さ優先探索がある。
0222デフォルトの名無しさん
2015/08/13(木) 14:57:39.52ID:W1EX3EBl再帰の中でも一番シンプルなデータ構造です。
シンプルなデータ構造にはシンプルなループを使いましょう。
0223デフォルトの名無しさん
2015/08/13(木) 15:00:06.78ID:W1EX3EBl再帰、再帰ばかり言ってないで、
最近何処かに出かけたか?w
引きこもってばかりだと、
体が細菌だらけになっちゃうぞw
0224デフォルトの名無しさん
2015/08/13(木) 15:09:12.83ID:NebXzry6主張してない事を主張として反論する事が多いですね…
逐次処理が必須なものは、並列化できなくて当然ですね
あえて挙げる意味ありますか?
ループと逐次処理で、並列の分割統治はできません
並列した時点でもうループではなく、並列、または再帰的処理です
そもそも自分で高階関数でいいと言ってるんですから、
逐次処理のループは消しましょう
>>223
もう本当ただの煽りですねw
0225デフォルトの名無しさん
2015/08/13(木) 15:16:09.30ID:GBQWWFg+> 全く違います。
これと
> 再帰版クイックソートは可読性が低いという主張ですね。
これ
> 再帰を使ったコードは可読性が低いので、
> sort等の関数を使って再帰を隠蔽するというのが
の、どこが違うのでしょう?
再帰版クイックソートは非再帰版に比べて、可読性が低いのですか? 高いのですか?
0226デフォルトの名無しさん
2015/08/13(木) 15:44:30.69ID:t3mydoM3いやどっちがシンプルな方法かは状況によりますし
そもそもリストの再帰でシンプルにならなかったら別のデータ構造使うべし
0227デフォルトの名無しさん
2015/08/13(木) 15:53:27.98ID:uKHAyuPa再帰関数は自己満足でしかないな
0228デフォルトの名無しさん
2015/08/13(木) 16:00:20.34ID:Iax2S8IU実用的なプログラミング手法
0229デフォルトの名無しさん
2015/08/13(木) 16:13:22.44ID:t3mydoM30230デフォルトの名無しさん
2015/08/13(木) 16:29:24.52ID:wsd38m6Jつくだけの議論に価値はないから、メアドでも交換して、
勝手にメールでやってくんない?
0231デフォルトの名無しさん
2015/08/13(木) 17:14:18.17ID:dAU/S6bTデザイナか底辺コーダーみたいなヤツらばっか
0232デフォルトの名無しさん
2015/08/13(木) 17:41:32.08ID:FeXmcCf70233デフォルトの名無しさん
2015/08/13(木) 17:55:50.75ID:A9RCljrX0234デフォルトの名無しさん
2015/08/13(木) 19:13:46.18ID:ZdpNokWxループはコンパイル時に最適化かかるから高速化しやすい
0235デフォルトの名無しさん
2015/08/13(木) 19:38:20.24ID:4z/i7w/x0236デフォルトの名無しさん
2015/08/13(木) 23:05:53.46ID:TPLbUV1y速度も含めて、再帰と非再帰でそんなに大騒ぎするほどの違いがあるかなあ。
0237デフォルトの名無しさん
2015/08/13(木) 23:12:53.85ID:WInk48Wa0238デフォルトの名無しさん
2015/08/13(木) 23:47:23.70ID:WInk48Wa再帰使うなと書いてあるだろ。
何言ってんだお前。
0239デフォルトの名無しさん
2015/08/14(金) 00:02:47.08ID:She38G+m0240デフォルトの名無しさん
2015/08/14(金) 00:31:35.66ID:bS+eLMvHこれが国際ルール。
0241デフォルトの名無しさん
2015/08/14(金) 00:38:24.26ID:30JcjEEEID:W1EX3EBl氏曰く、可読性が悪いから許容出来ない。らしい。
0242デフォルトの名無しさん
2015/08/14(金) 00:45:15.19ID:She38G+m0243デフォルトの名無しさん
2015/08/14(金) 00:49:42.60ID:EjQiuBiC0244デフォルトの名無しさん
2015/08/14(金) 00:53:34.88ID:She38G+m0245デフォルトの名無しさん
2015/08/14(金) 02:23:00.05ID:bS+eLMvH再帰を使わなければならない言語は実用性ないからやめとけ。
煽ってるように思うかもしれないが、10年後に思い返してみ。
その通りだったとわかるから。
0246デフォルトの名無しさん
2015/08/14(金) 03:21:13.76ID:EMHxFo3V関数型を選ぶのはコンプレックスとか本来の目的以外がモチベーションになってる
0247デフォルトの名無しさん
2015/08/14(金) 04:02:13.98ID:wyMAq0xx0248デフォルトの名無しさん
2015/08/14(金) 04:50:19.83ID:MLcHO6rW0249デフォルトの名無しさん
2015/08/14(金) 05:07:39.58ID:QRcaU/9J英語は読み間違えるし、コードを読む力が皆無だし
再帰のコードをループに直せないし、
何よりも再帰を使用してはいけないことが理解できない。
プログラマの基礎学力を欠いてる。
0250デフォルトの名無しさん
2015/08/14(金) 05:20:19.69ID:wyMAq0xx0251デフォルトの名無しさん
2015/08/14(金) 05:46:48.29ID:SrkbsMCI読み間違えるんじゃなくて、読んでないんだろ。
何となくそれっぽいこと書けばいいみたいな。
再帰の危険性を指摘した文章を引用して、再帰するべきであると主張してるし。
自前スタックによる実装を示して、再帰してると主張するし。
しかも、読んでないだろとか言いがかりつけてくるし。
打ち負かすのが目的だから話にならない。
CERT CC読むだけでも再帰がなぜいけないのかわかるだろうに。
0252デフォルトの名無しさん
2015/08/14(金) 05:53:10.80ID:SrkbsMCI2chコーディング規約第一条、再帰の禁止。
再帰を用いる者は、50万円以上の過料、あるいは10年以上の禁固刑と処す。
■ このスレッドは過去ログ倉庫に格納されています