segmentation 오류에 대해

조회수 506회

include

int factorial(int n) {

if (n < 0) { return 0; }
else if (n == 0) { return 1; }
else { return n * factorial(n); }

}

int main(void) { int n = 0;

printf("n을 입력하세요. : ");
scanf("%d", &n);

printf("%d! = %d\n", n, factorial(n));

return 0;

}

이 코드에서 6번째줄 factorial(n)을 n-1로 바꿔야 하는건 알겠는데 기존 코드로 돌렸을때 왜 segmentation 오류가 나는건가요?? 정확한 과정 설명부탁드립니다 ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • n이 감소하지 않으므로 메모리가 부족해질때까지 반복수행을 하기 때문입니다. 정영훈 2019.5.14 11:17

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)