본문 바로가기

야곰커리어캠프_TIL

20220215 / D9 / 재귀함수와 반복문의 차이

- Reference

- https://www.tutorialspoint.com/what-are-the-differences-between-recursion-and-iteration-in-java

- https://techdifferences.com/difference-between-recursion-and-iteration-2.html

https://dev.to/mosbat/is-recursion-worth-it-3ee6

재귀함수반복문의 특징 및 차이점

 

# 재귀함수와 반복문의 특징

[재귀함수]

- 재귀함수란 함수가 구문내에서 자기자신을 호출하는 것

 

[장점]

- 형태를 사용하면 코드의 가독성을 높일 수 있다.

[단점]

- 원하는 값이 도출할때까지 stack에 메모리가 쌓이기때문에 더 많은 메모리를 사용한다.

- stack관리의 오버헤드로?인해? 반복보다 속도가 느리다.

- 예상치 못한 무한 재귀가 발생할 수 있으며 요즘은 메모리용량이 커 해당사항이 거의 없지만 stack메모리가 많이쌓여 stackOverFlow에 가능성이 나올 수 있다.

 

[반복문] 

- 반복문이란 조건이 거짓이될때까지 반복적으로 실행되는 것이다.

 

[장점]

- stack을 사용하지않으므로 재귀보다 속도가 빠르다.

- 메모리 소모를 덜한다.

[단점]

- 코드가 길어 질 수 있다.

- 조건이 거짓이되지않을시 무한 루프에 빠질 수 있다.

- 루프 조건이 실패하면 반복이 종료된다.

 

# 재귀함수와 반복문의 차이

- 재귀는 선택적인 구조이지만 반복문은 반복적인 구조이다.

- 재귀함수의 형태는 답정너 같은 원리로 원하는 값이 나올때 까지 자신의 함수를 호출하기때문에 추가적인 코드를 구현할 필요가 없지만, 반복문은 특정 값이 나올때까지 반복문을 추가로 구현해줘어야 한다.?

- 재귀는 stack구조를 메모리를 쌓기때문에 반복보다 더많은 메모리를 사용한다.

- 반복문은 stack구조를 사용하지않아 메모리가 쌓이지않는다. 그래서 속도가 재귀보다 빠르다.
- https://github.com/Quokkaaa/ios-rock-paper-scissors/blob/STEP2/README.md

 

추가적으로 차이점은 분명히 더 존재하지만 이해되는 것 그리고 큰 특징만을 추려보았다.