2017-02-09 8 views
0

再帰的メソッドを使用するか標準的な反復メソッドを使用するかを決定できない場合、コーディングの問題に直面するときに従うべきゴールデンルールがあります。あるいは、両方のオプションが、メモリ、コードの量...という点で、もっともらしく、あるいは等しく効率的と思われるときは...?再帰的メソッドと標準的な反復メソッド

+3

再帰は、特定の種類の問題を解決するのに便利ですが、その欠点(コードの複雑さ、パフォーマンス、スタックのオーバーフローなど)があります。 – shmosel

+0

上記のように、再帰メソッドにはスタックオーバーヘッドがあり、呼び出しスタックが大きすぎるとスタックオーバーフローエラーが発生することに注意してください。これが問題でなければ、私は技術的な挑戦のようには思えません。いくつかの問題は、クイーンズ問題のような再帰を使って行うのが最善ですが、反復的な解決を行うことは完全に可能ですが、頭痛に過ぎません。再帰的オーバーヘッドはコールスタックフレームであり、反復オーバーヘッドは通常より小さいため、再帰的問題のオーバーヘッド量は問題に依存します。私のアドバイスは、自然に見えるものをすることです。 – dddJewelsbbb

答えて

1

Javaは関数型プログラミング言語ではなく、関数型プログラミング言語でよく見られるような末尾再帰などの機能は提供しません。だから、Javaの場合、反復を一般的には好むと言えますが、反復的な解決策では、手動でスタックなどを維持する必要がある場合は、再帰を使用してください。

関連する問題