Я пытаюсь реализовать приложение проблемы рюкзака, но получаю переполнение стека и не могу понять, где я иду не так.
public static int knapsack(int bound, Node u, Node end, int len){
if(bound == 0 || u == end) return 0;
for(Node w : u.getNeighbors()) {
if(len + w.getEdge(u).length > bound)
return knapsack(bound, w, end, len);
return Integer.max(w.getTile().coins() + knapsack(bound - w.getEdge(u).length,w,end, len + w.getEdge(u).length), knapsack(bound, w,end, len));
}
return 0;
}
По существу, существует лабиринт, представленный графом (рядомузлы в лабиринте являются соседями).
bound
- максимальное количество ходов, которое нужно выбрать.Узел u
- это текущий узел, а end
- это выходной узел.len
- сумма расстояний на пути.
Пожалуйста, дайте мне знать, где я иду не так.Спасибо