limdy0728   3년 전

컴파일 하면 값은 제대로 나옵니다

그러나, 제출을 하면 96퍼 까지 올라가다가 시간 초과라고 뜨더군요.

시간 초과가 왜 뜨는지 알 수 있을까요?

고수님들 답변 부탁 드립니다.

caritas1996   3년 전

0일때 문제가 있는거 같아요

limdy0728   3년 전

@caritas1996 앗 0일때 문제라고 하셨는데 어떤 문제인건가요....?

caritas1996   3년 전

0! = 1 이기 때문에 1을 바로 리턴해줘야 하는데

factorial(0)를 호출하면 맨 아래에 있는 0*factorial(-1)로 넘어가고

또 factorial(-1)를 호출하게 돼서 (-1)*factorial(-2)로 넘어가게 돼요.

그럼 factorial(-2)를 호출하게 되고 ... 무한 루프에 빠지게 됩니다.


n이 1일 때만 리턴하지 말고 1이하일 때 리턴할 수 있도록 설정해주면

더 이상 재귀를 호출하지 않을거에요.


limdy0728   3년 전

@caritas1996 앗! 친절한 답변 감사합니다 :)

댓글을 작성하려면 로그인해야 합니다.