どうすれば「スタックの深さを追跡する」ことができるのか混乱しています。実際、この質問は、私の質問の 1 つの回答https://stackoverflow.com/a/11157985/1010943に関連しています。答えは正しくて理解できましたが、ヒントを理解できませんでした。グーグル検索でも、有用な情報は明らかになりません。ちなみに、それが問題なら、私はEclipse IDEを使用しています
3 に答える
3
(たとえば)depthというintパラメータを追加するだけです。
再帰関数を最初に呼び出すときに、depth=0を渡します。
再帰するときはいつでも、depth+1を通過します。
したがって、深さは常に、これまでに繰り返した回数です。
または、呼び出しスタックのメソッドの厄介なチェックを行うこともできますが、私はそのルートをたどりません!;]
于 2012-06-22T16:04:11.683 に答える
2
http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace()をご覧ください。
このスレッドのスタックダンプを表すスタックトレース要素の配列を返します。このスレッドが開始されていないか終了している場合、このメソッドは長さゼロの配列を返します。返された配列の長さがゼロ以外の場合、配列の最初の要素はスタックの最上位を表します。これは、シーケンス内の最新のメソッド呼び出しです。配列の最後の要素はスタックの最下部を表します。これは、シーケンス内で最も最近のメソッド呼び出しです。
于 2012-06-22T16:05:08.117 に答える
2
再帰関数に深さパラメーターを含めるか、Thread.getStackTrace()を使用して、スタックの深さを追跡できます。
于 2012-06-22T16:03:59.233 に答える