2017-06-30 16 views
0

私はDFSで練習していますが、私のコードは修正できないところで間違っていました。ここに私のコードです:私のdoSearch()方法で深さの最初の検索を実行する

public static <T> void doSearch(Dimension start, Dimension end, char[][] grid) { 
    System.out.println(start); 
    while (true) { 
     if (checkEqual(start, end)) { 
      break; // stop searching 
     } 
     getPossibleMoves(start, grid); 
     doSearch(moves.pop(), end, grid); 
    } 
} // the end 

、私は、あなたが「開始」から行うことができます可能な動きを見つけるためpossibleMoves()方法の動きを保存するために「移動」のスタックを持っています。しかし、checkEqual()メソッドが私がターゲットに到達したことをチェックすると、それはwhileループから壊れて終了に行きますが、whileループに戻りますので、doSearch()メソッドは決して停止しません。どこでミスをしますか?

+0

[ask]と[MCVE]を見てください – pvg

答えて

0

このロジックのロジックは間違っています。たとえば、whileループの最初の反復で "checkEquals"が "false"を返すと、可能な移動を取得してから最初の移動を検索するとします。次の反復では、同じことが起こります。「checkEqual」がfalseを返し、可能な移動を再生成し、最初の可能な移動を検索します。これは永遠に起こります。

関連する問題