더북(TheBook)
function openAround(rI, cI) {
  setTimeout(() => {
    const count = open(rI, cI);
    if (count === 0) {
      openAround(rI - 1, cI - 1);
      openAround(rI - 1, cI);
      openAround(rI - 1, cI + 1);
      openAround(rI, cI - 1);
      openAround(rI, cI + 1);
      openAround(rI + 1, cI - 1);
      openAround(rI + 1, cI);
      openAround(rI + 1, cI + 1);
    }
  }, 0);
}

이제 칸들이 순차적으로 열리기 시작합니다. 그런데 열어야 할 칸이 많으면 칸이 열릴 때 느려지는 모습을 볼 수 있습니다. 심한 경우에는 웹 브라우저가 멈춰 버릴 수도 있습니다. 재귀 함수를 잘못 사용했을 때 연산량이 매우 많아져서 그렇습니다. 지금은 한 칸을 열 때마다 주변 8칸을 검사한 뒤 열고, 주변 8칸이 다시 주변 8칸을 검사한 뒤 열고 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.