[解決済み】再帰と反復のどちらを選ぶ?
2022-04-01 17:45:47
質問
同じ目的を果たすことができるアルゴリズムにおいて、再帰の代わりにループを使用した場合、またはその逆を行った場合、パフォーマンスに影響があるのでしょうか?例:与えられた文字列が回文であるかどうかをチェックする。 多くのプログラマが、単純な反復アルゴリズムで対応できるにもかかわらず、再帰を見せびらかす手段として使っているのを見たことがあります。 コンパイラは、何を使うかを決めるのに重要な役割を果たすのでしょうか?
どのように解決するのか?
再帰的な関数が 末尾再帰的 (最終行が再帰呼び出し)。 テールリカーシオン は コンパイラに認識され、反復処理に最適化されます(あなたのコードにある簡潔で明確な実装は維持されます)。
私なら、数ヶ月後、数年後にそのコードを保守しなければならない哀れな人(自分であれ、他の人であれ)にとって、最も理にかなっていて、最も分かりやすい方法でアルゴリズムを書きますね。 もしパフォーマンスの問題が発生したら、コードをプロファイリングして、それから反復処理に移行して最適化することを検討してください。 例えば メモ化 と ダイナミックプログラミング .
関連
-
[解決済み] 実行時間(高速化)の計算方法
-
[解決済み] 末尾再帰とは何ですか?
-
[解決済み] Pythonの最大再帰深度とその増やし方とは?
-
[解決済み] 再帰から反復への道
-
[解決済み】再帰はループより速いことがあるのか?
-
[解決済み】x86_64アセンブリで無駄なMOV命令を導入すると、なぜタイトループが速くなるのでしょうか?
-
[解決済み】すべての再帰は反復に変換できる?
-
[解決済み] Scalaのlazy valの(隠れた)代償は何なのか?
-
[解決済み] Apache Spark: map vs mapPartitions?
-
[解決済み] Haskellプログラムにおけるガベージコレクションの一時停止時間の削減
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テールコール最適化とは何ですか?
-
[解決済み] πの値を最も早く求める方法は何ですか?
-
[解決済み】HTTPとHTTPSのパフォーマンス比較
-
[解決済み】再帰はループより速いことがあるのか?
-
[解決済み】再帰と反復のどちらを選ぶ?
-
[解決済み】Goはどうしてそんなに早くコンパイルできるのですか?
-
[解決済み】GHCコアの読み込み
-
[解決済み] Scalaのlazy valの(隠れた)代償は何なのか?
-
[解決済み] x86アセンブリでレジスタをゼロに設定するには、xor、mov、andのどれが一番良い方法ですか?
-
[解決済み] フィボナッチヒープを実際に効率よく実装した人はいますか?