h4ckjk   5년 전

아래의 소스와 같이 재귀를 이용한 최대공약수, 반복문을 이용한 최대공약수를 둘 다 작성해서 제출해보았습니다.

재귀의 경우 68ms가 나왔고

그냥 루프문의 경우 76ms가 나왔습니다.

근데 제가 평소에 알고 있던 상식으로는

일반적으로 알고리즘을 구현하면 재귀함수가 메모리도 더 많이 들고 시간도 더 많이 소비한다고 알고 있었습니다.

근데 루프문이 오히려 더 느리게 나온 이유를 모르겠습니다.

djm03178   5년 전

제가 직접 제출해보니 반대로 gcd가 76ms가 나오고 gcd2가 68ms가 나왔습니다.

사실 gcd가 수행되는 과정 자체는 gcd든 gcd2든 0.001ms도 걸리지 않을 것이기 때문에 이러한 비교는 의미가 없습니다. Java 프로그램의 경우 프로그램이 실행되기 전에 JVM이 먼저 실행되어야 하고, 프로그램이 실행될 때 여러 가지 준비되어야 할 것들도 있는데, 이들이 차지하는 시간이 수십 ms인 것이지, main 함수 내부가 돌아가는 시간은 이와는 비교가 되지 않을 정도로 짧습니다.

프로그램이 실행될 때마다 서버 컴퓨터의 상태에 따라 그 정도의 오차가 발생하는 것이고, 이 중 gcd의 영향은 매우 극히 적기 때문에 비교하는 것에 의미를 둘 수 없습니다.

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