2010-11-26 4 views
2

最近私の友人がintvに出席しましたが、この質問に直面しました(intviewerは私のフレンズの答えから別の質問にこれを作った) どちらかを使用するオプションがあります 1)recursion - >は、私はOSがすべてを世話してくれると思う。 2)私たち自身のスタックをデータ部分だけに使い、処理を完了させる。何かを修正するには あなたはどちらを好みますか?なぜ? スタックサイズが100を超えないと仮定します。スタック上のインタビュー質問

答えて

1

関数呼び出しは、それほど遅くはありませんが、ゼロ以外の時間をとります。したがって、反復解はわずかに速くなる可能性があります。

2

システムスタックを使用します。なぜホイールを再発明するのですか?

+1

私は彼が答え、パフォーマンスの視点を期待していると思います。 –

+0

@ user520959 - パフォーマンスは単なる考慮事項です。インタビュアーが具体的に最も重要な考慮事項の1つであると具体的に言及していない限り、この場合、Rubayeetにも同意すると思います – InSane

+0

@ user520959 - インタビュアーの質問は「どちらが速いのですか?それでも、あなた自身のソリューションがシステムスタックを使うよりも速くなることをどのように保証しますか? – rubayeet

1

多くの場合、それほど簡単ではありませんが、わずかなパフォーマンスの向上よりも優れています。

解決策を過剰に使用しないでください.1msを使用しない場合は、1msの緩やかな可変速性/可読性を使用しないでください。

多くの標準/システムソリューションが利用可能であることが証明されているので、あなたがまとめた賢明な小さなハッキングが維持されなければならないことを覚えておいてください。 (ホイールの改造を参照)。

メモリ割り当てを減らしてパフォーマンスを向上させることが本当にシステムの批判的な場合は、あなたの仕事を減らし、ソリューションがより優れている/より速く安定していることを証明するために時間を費やす準備をします。

-1

システムで使用できないカスタム機能が必要な場合は、オプション2を使用します。それ以外の場合は、オプション1を使用します。なぜホイールを改造するのですか?私はあなたのポイントを得た場合

0

フム、私はそれが問題をdeppendsだと思う...

スタックサイズは、1または別のものを使用してからあなたを制限するものだけではありません。

しかし、再帰を使用したいと思っています...実際には、スタックの長さには悪いことはありませんが、私はむしろ自分で解決したいと思います。

できるだけ再帰を避けてください。 :)

+1

再帰は悪くありません。また、実装時間を短縮することができます。 – Donotalo

+0

マシンに依存しますが、コンテキストスイッチがそのマシンで10msかかる場合は、独自のスタックを使用する必要があります –

0

再帰は、特定の問題を解決する最も簡単な方法です。反復的なソリューションでは、より多くのコードとエラーの機会が必要になります。テストおよびメンテナンスのコストは、パフォーマンスのメリットよりも大きい場合があります。

1

ここでの再帰の一般的な優先度、および再帰的な実装が必然的により明確または維持可能であると考えている人に興味があります。

  • 再帰は通常、彼らは
  • 再帰を計算しているよう再帰は単に順序を逆にすることが自明で作ることができる結果を格納するコンテナを避けるために、関数内のローカル変数を使用することができます
  • 明示的なループを回避サブ結果は集められます
  • 再帰とは、処理される情報の深さに制限があることを意味します。ループ実装ではこれを簡単に回避できるため、少なくともデータ処理ニーズをより正確に反映するメモリ要件があります。
    • あなたのソフトウェアがもっと広く適用されるほど、任意の制限を削除することが重要になります(例:現代のvim、less、GNU grepなどのUNIXソフトウェアは、ファイル/行/式の長さについての最小限の仮定を行い、求められたものを動的に試しています/古いエディタやベンダー固有のユーティリティを覚えています。長すぎる行の最後に結果と一致することはありませんでしょう一つの「天体」、同社のgrepを、SIGSEGVedは、シャットダウンは、長い行またはファイル)に破損しているか、無駄にスローダウンエディタ
  • 素朴な再帰がにつながることができます見事に非効率的に一部の人々が理解しやすく、再帰を見つけるサブ結果
  • を組み合わせた、いくつかは、それが困難見つける - 確かに、それはシステムを使用し、私たちは私が最初に行くと他の人
0

より良いいくつかの問題についてどのように考えるかスーツスタック。 FORTHという言葉には2つのシステムスタックがあります。 1つはリターンスタック、もう1つはパラメータスタックです。これは素晴らしい柔軟性を提供します。

1

アルゴリズムによって異なります。小さなスタックの使用、システムスタック。たくさんのスタックが必要です。ヒープに移動します。スタックサイズは、OSがstackoverflowをスローするOSによって制限されています;-) algoがもっと多くのスタックスペースを使用する場合は、スタックデータ構造を持ち、ヒープ上にデータをプッシュします。

関連する問題