-1
스택 크기 오류를 극복하기 위해 코드를 다시 작성하려고합니다. "RangeError : 최대 호출 스택 크기를 초과했습니다." 노드를 사용하여 JavaScript에서 스택을 사용하여 DFS를 실행하려고합니다.노드를 사용하여 깊이 우선 검색을 수행하면 RangeError : 최대 호출 스택 크기가 초과되었습니다.
settimeout에 대해 많이 들었지만 내 경우에는이를 구현하는 방법을 모르겠습니다. 어떤 충고라도 잘 될 것입니다.
var Stack = function() {
this.items = [];
};
Stack.prototype.push = function(obj) {
this.items.push(obj);
};
Stack.prototype.pop = function() {
return this.items.pop();
};
Stack.prototype.isEmpty = function() {
return this.items.length === 0;
};
Stack.prototype.isExplored = function(n){
return this.items.indexOf(n) !== -1;
}
Stack.prototype.emptyOut = function() {
this.items = [];
return this.items.length === 0;
};
var stack = new Stack();
var adjList=[];
for(var i= 1; i<15557;i++){
adjList.push([i])
}
adjList.push([0])
function DFS(graph, s){
stack.push(s);
for(var i = 0 ; i < graph[s].length; i++){
var v = graph[s][i];
if(!stack.isExplored(v)){
DFS(graph, v);
}
}
}
DFS(adjList, 0)
console.log("done", stack);
나는 무엇을해야할지 모른다. 그러나 DFS를 재귀 적으로 15557 번 호출한다. 이것은 스택이 처리하기에는 너무 많은 양이다. – ASDFGerte
내 데이터 집합에 노드가 15557 개 이상있는 경우에는 동의합니다. setTimeout이 문제를 해결할 수 있는지 또는 다른 해결책을 알고 있는지 궁금합니다. –