graph-traversing/depth-first-search-recursive.js
/* 1 procedure DFS(G,v): 2 label v as discovered 3 for all edges from v to w in G.adjacentEdges(v) do 4 if vertex w is not labeled as discovered then 5 recursively call DFS(G,w) */Function `dfs` has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.const dfs = (start, searchFor) => { if (!searchFor || !start) { throw new Error('Invalid input'); } // If the node we are searching for if (searchFor === start.getValue()) { return start; } let child; let found; const neighbors = start.getNeighbors(); // iterate through all of the starting nodes neighbors for (let i = 0; i < neighbors.length; i++) { child = neighbors[i]; // Recursviely call the child nodes until we find found = dfs(child, searchFor); // If we find the item we are searching for - return the node if (found) { return found; } } // If we cannot find the node - return false; return false;}; module.exports = dfs;