Я написал сегмент кода, чтобы определить самый длинный путь в графе. Ниже приведен код. Но я не знаю, как вычислить сложность в нем из-за рекурсивного метода в середине. Поскольку найти самый длинный путь - это полная NP-задача, я предполагаю что-то вроде O(n!) или O(2^n), но как я могу ее определить?
public static int longestPath(int A) {
    int k;
    int dist2=0;
    int max=0;
    visited[A] = true;
    for (k = 1; k <= V; ++k) {
        if(!visited[k]){
            dist2= length[A][k]+longestPath(k);
            if(dist2>max){
                max=dist2;
            }
        }
    }
    visited[A]=false;
    return(max);
}
