クラスを使用して再帰メソッドを作成しています。必要な出力がまったく得られません。
public Result foo( cell, Result R )
{
grid = createGrid( cell )
if (grid.empty )
return;
else
{
// find best 2 cell.
best_cells[] = findBestCell( grid );
// saves best R found so far.
R = updateResult( R );
// call foo( best_cells[] );
for ( every cell in best_cells[] )
return foo( best_cells[i], R );
}
return R;
}
if(grid.empty)
このメソッドは、条件がtrue
初めてのときにシロアリします。他の細胞には向かない!何故ですか?私はリターンを逃していますか?
更新 1: メモをくれた Thomas に感謝します。コードを次のように変更しました。
public Result foo( cell, Result R )
{
grid = createGrid( cell )
if (grid.empty )
return R;
else
{
// find best 2 cell.
best_cells[] = findBestCell( grid );
// saves best R found so far.
R = updateResult( R );
// call foo( best_cells[] );
for ( every cell in best_cells[] )
{
Result temp_R = foo( best_cells[i], R );
if( temp_R.error < R.error )
R = temp_R;
}
}
return R;
}
私はそれをテストしてから皆さんに返します。
更新 2: 以前のコードは問題なく動作します。最初の入力 R は == null であってはなりません。そうしないと、NPE が表示されます。
トーマス、どうもありがとう!コメントありがとうございます:)