1
나는 주어진 0128 행렬에서 찾은 psuedocode을 사용하여 일부 n * n 행렬이 주어진 특정 경로를 찾는 재귀 적 구현을 작성했습니다. (매트릭스로 인접 셀에 셀 매트릭스) 다른 우리 그래프에서 하나 개의 정점으로부터가는 에지 값 우리 경로의 각 인덱스 직접 호출자에게 재귀 함수가 반환되지 않음
- 경로 중량 어레이 : I 두 배열을 구성했다 가중치 배열
내 재귀 함수가 반환하는 이유는 무엇입니까? 즉각적인 호출자에게 반환되지 않습니다.
내 구현 : 다음 줄
// find paths of specific length from our starting cell 1,1
// when a path is found print it
// otherwise return?
function findPaths(adjMatrix, pathW_array, path, pathWeight, x, y, idx, curpath_idx){
// set curpath to the current path (an array with storing path weight values)
var curpath = path;
// tempArray with store pathW_array (set cell value to -1 if value has been added to curpath)
var tempArray = pathW_array;
// curValue retruns sum value of our curpath
if ((curValue(curpath) == pathWeight) && (Object.keys(curpath).length !=1)){
for(i = 0; i < Object.keys(curpath).length; i++){
console.log(curpath[i]);
}
return;
}if(tempArray[x][y] == -1){
return;
}if(curValue(curpath) > pathWeight){
return;
}
// Did not return, add current cell value to curpath array
curpath[curpath_idx] = tempArray[x][y];
curpath_idx = curpath_idx + 1;
// set current cell value in tempArray to -1 because we've added it to current path (do not want to add same cell value multiple times)
tempArray[x][y] = -1;
// iterate until i = pathWeight -1
for(var i = 0; i < pathWeight; i++){
if(adjMatrix[idx][i] != -1){
// get pathW_array indices for next neighbor cell of current element
arrayIndices = neighbor_value(adjMatrix, tempArray, idx);
x = arrayIndices[0];
y = arrayIndices[1];
adjMatrix[idx][i] = -1;
idx = adjMatrix_idx(x,y);
// findpaths from the next cell in the matrix
findPaths(adjMatrix, tempArray, curpath, pathWeight, x, y, idx, curpath_idx);
curpath.pop();
curpath_idx = curpath -1;
}
}
}