Напоролся при собеседовании на такую задачу и не смог подойти к ней верно. Нужно определить, нет ли в указанном обьекте циклических зависимостей. В качестве ближайшего примера приводятся зависимости в node-модулях.
Итак, сама задача: написать функцию hasCircularDepengency(entrypoint, data), которая вернет true / false для объекта data =
const data = {
"index.js" : ['foo.js'],
"foo.js" : ['baz.js', 'lol.js'],
"baz.js" : ['bar.js', 'lem.js'],
"bar.js" : ['baz.js', 'k.js'],
};
Функция вызывается с параметрами hasCircularDepengency("index.js",data) и по-идее должна вернуть false, так как указатель baz.js имеет зависимость bar.js, а bar.js - наоборот baz.js.
Алгоритм понятен - нужно составить список уже пройденных путей и если вдруг попадается указатель, который в списке оказался дважды - значит есть циклическая зависимость и результат будет false.
Как именно реализовать такое при помощи рекурсии - бьюсь третий день, пока безрезультатно.
Прошу помощи в разборе подхода.