2017-01-06 2 views
-1

개체 배열에서 개체를 반환하려는 재귀 함수가 있습니다. 이 함께 재생 분들재귀 함수가 값을 반환하지 않습니다.

{ 
    id: 5, 
    neighbors: { 
    north: 1, 
    east: 6, 
    south: 9, 
    west: 4 
    } 
} 

는 4 × 4 판에 5 정사각형이다 어레이 내의 각 객체는 이런 "이웃"객체에 대한 참조를 포함한다. I는 상술 된 바와 같이 기능을 실행할 때

function findFarthestEmpty(board, id, direction) { 
    let nextSquare = board[id].neighbors[direction] 
    if (nextSquare === null) { 
    console.log('return last square on board', board[id]) 
    return board[id] 
    } else { 
    findFarthestEmpty(board, nextSquare, direction) 
    } 
} 
//Try a move. 
console.log(typeof(findFarthestEmpty(board, 5, 'north'))) 

는 I 적절한 사각형 오브젝트 로그로부터 얻을 :

함수는 모든 기판 사각형 배열, 전류 제곱의 ID 및 방향을 얻어 라인 4,하지만 내 진술은 "정의되지 않았습니다." 아마도 나는 진술과 표현을 혼란스럽게 생각합니까?

let board = [ { id: 0, 
neighbors: { north: null, east: 1, south: 4, west: null }, 
meeple: null }, 
{ id: 1, 
neighbors: { north: null, east: 2, south: 5, west: 0 }, 
meeple: null }, 
{ id: 2, 
neighbors: { north: null, east: 3, south: 6, west: 1 }, 
meeple: null }, 
{ id: 3, 
neighbors: { north: null, east: null, south: 7, west: 2 }, 
meeple: null }, 
{ id: 4, 
neighbors: { north: 0, east: 5, south: 8, west: null }, 
meeple: null }, 
{ id: 5, 
neighbors: { north: 1, east: 6, south: 9, west: 4 }, 
meeple: null }, 
{ id: 6, 
neighbors: { north: 2, east: 7, south: 10, west: 5 }, 
meeple: null }, 
{ id: 7, 
neighbors: { north: 3, east: null, south: 11, west: 6 }, 
meeple: null }, 
{ id: 8, 
neighbors: { north: 4, east: 9, south: 12, west: null }, 
meeple: null }, 
{ id: 9, 
neighbors: { north: 5, east: 10, south: 13, west: 8 }, 
meeple: null }, 
{ id: 10, 
neighbors: { north: 6, east: 11, south: 14, west: 9 }, 
meeple: null }, 
{ id: 11, 
neighbors: { north: 7, east: null, south: 15, west: 10 }, 
meeple: null }, 
{ id: 12, 
neighbors: { north: 8, east: 13, south: null, west: null }, 
meeple: null }, 
{ id: 13, 
neighbors: { north: 9, east: 14, south: null, west: 12 }, 
meeple: null }, 
{ id: 14, 
neighbors: { north: 10, east: 15, south: null, west: 13 }, 
meeple: null }, 
{ id: 15, 
neighbors: { north: 11, east: null, south: null, west: 14 }, 
meeple: null } ] 
+3

이 기능이 때'nextSquare' _isn't_'null'을 반환하는 것을 생각해 볼 수 있습니다 : 재귀 경우도 대답을 반환하도록, 재귀 경우에 반환을 추가해야합니다. –

답변

3

을 예상대로 작동합니다. 기본 케이스에있을 때 ID를 반환하지만 재귀 문에만 반환됩니다.

else { 
    return findFarthestEmpty(board, nextSquare, direction) 
    } 
1

라인 기능 7 반환 : 당신은 보드 배열을 원하는 경우

.

typeof(findFarthestEmpty(board, 5, 'north')) 

재귀 함수는이 순간에 아무것도 반환하지 않습니다 : 그것은 당신이 때문에 정의되지 않은 받고있어

관련 문제