我正在用类编写递归方法。我根本没有得到我想要的输出。
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。
非常感谢托马斯!谢谢你们的评论:)