Я пишу рекурсивный метод с классами. Я не получаю вывод, который я хочу вообще.Рекурсивная функция с объектами?
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: Спасибо Томас за заметки. Я изменил код на:
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.
Спасибо Томас столько! Спасибо, ребята, за комментарии ура :)
Первый возврат должен возвращать некоторый объект типа 'Result'. – npinti
Что это за код? Предоставьте реальный компилируемый Java-код. – BobTheBuilder
Если это так, то, возможно, ваш createGrid не делает то, что вы ожидаете от этого. Пожалуйста, изучите его. –