Переполнение стека в алгоритме ранца - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь реализовать приложение проблемы рюкзака, но получаю переполнение стека и не могу понять, где я иду не так.

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 - сумма расстояний на пути.

Пожалуйста, дайте мне знать, где я иду не так.Спасибо

...