EDIT 誰かが効果的に私がエンドポイントに達したことを確認するためにすべての再帰をステップダウンする必要があることを指摘しています私がスタックを通って戻るときの値。私はこれがどういう意味か分かりません。ベクトルを作成してJavaの再帰メソッド内に情報を格納する
私の目標は、迷路を通してパスを構築し、そのパスをVectorに格納し、再帰の最後にそれを返す再帰的メソッドを構築することです。
私のメソッドは迷路を実行しますが、すべての再帰をインスタンス化する必要があるため、Vectorにリストを格納するのが困難です。ここで
は私のコード(EDITED)です:
protected Vector<GameCell> findPath(int nRow, int nCol)
{
aBoard[nRow][nCol].setVisited(true);
if(aBoard[nRow][nCol].getVal() == 'E')
{
Vector<GameCell> list = new Vector<GameCell>();
list.add(aBoard[nRow][nCol]);
return list;
}
if(canGoLeft(nRow, nCol))
{
if(!aBoard[nRow][nCol - 1].isVisited())
{
return findPath(nRow, --nCol);
}
}
if(canGoRight(nRow, nCol))
{
if(!aBoard[nRow][nCol+1].isVisited())
{
return findPath(nRow, ++nCol);
}
}
if(canGoUp(nRow, nCol))
{
if(!aBoard[nRow - 1][nCol].isVisited())
{
return findPath(--nRow, nCol);
}
}
if(canGoDown(nRow, nCol))
{
if(!aBoard[nRow + 1][nCol].isVisited())
{
return findPath(++nRow, nCol);
}
}
System.out.println("You hit a dead end.");
return null;
}
は私が永久に私の値を格納することができますので、私は私のベクトルすべての再帰をインスタンス化することはできません方法はありますか?
ご協力いただければ幸いです。 Javaの2以降のベクトルが効果的に廃止されていることを
public List<GameCell> findPath(int nRow, int nCol) {
List<GameCell> result = new ArrayList<>();
doFindPathRecursively(result, nRow, nCol);
return result;
}
private void doFindPathRecursively(List<GameCell> result, int nRow, int nCol) {
...
}
注意、したがって使用:
はい。引数としてメソッドに渡し、メソッドからそれを作成します。 –
私が設定したパラメータは、自分の仕様に従って使用できる唯一のパラメータであることを明確にする必要があります。このメソッドでは、My Vectorを作成する必要があります。 –
'java.util.Vector'は19年間時代遅れです。あなたはどのくらいJavaでプログラミングしていますか? –