- 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

재귀함수와 반복문의 특징 및 차이점
# 재귀함수와 반복문의 특징
[재귀함수]
- 재귀함수란 함수가 구문내에서 자기자신을 호출하는 것
[장점]
- 형태를 사용하면 코드의 가독성을 높일 수 있다.
[단점]
- 원하는 값이 도출할때까지 stack에 메모리가 쌓이기때문에 더 많은 메모리를 사용한다.
- stack관리의 오버헤드로?인해? 반복보다 속도가 느리다.
- 예상치 못한 무한 재귀가 발생할 수 있으며 요즘은 메모리용량이 커 해당사항이 거의 없지만 stack메모리가 많이쌓여 stackOverFlow에 가능성이 나올 수 있다.
[반복문]
- 반복문이란 조건이 거짓이될때까지 반복적으로 실행되는 것이다.
[장점]
- stack을 사용하지않으므로 재귀보다 속도가 빠르다.
- 메모리 소모를 덜한다.
[단점]
- 코드가 길어 질 수 있다.
- 조건이 거짓이되지않을시 무한 루프에 빠질 수 있다.
- 루프 조건이 실패하면 반복이 종료된다.
# 재귀함수와 반복문의 차이
- 재귀는 선택적인 구조이지만 반복문은 반복적인 구조이다.
- 재귀함수의 형태는 답정너 같은 원리로 원하는 값이 나올때 까지 자신의 함수를 호출하기때문에 추가적인 코드를 구현할 필요가 없지만, 반복문은 특정 값이 나올때까지 반복문을 추가로 구현해줘어야 한다.?
- 재귀는 stack구조를 메모리를 쌓기때문에 반복보다 더많은 메모리를 사용한다.
- 반복문은 stack구조를 사용하지않아 메모리가 쌓이지않는다. 그래서 속도가 재귀보다 빠르다.
- https://github.com/Quokkaaa/ios-rock-paper-scissors/blob/STEP2/README.md
추가적으로 차이점은 분명히 더 존재하지만 이해되는 것 그리고 큰 특징만을 추려보았다.
'야곰커리어캠프_TIL' 카테고리의 다른 글
20220224 / D12 / KVO와 Notification의 장단점 및 Init과 self에대한 궁금증 (0) | 2022.02.25 |
---|---|
20220222 / D11 / auto 레이아웃 맛보기... (0) | 2022.02.23 |
20200213 / D8 / 일반화,추상화,캡슐화,은닉화 (0) | 2022.02.15 |
20200213 / D8 / 함수명 지을때 명사로..? (0) | 2022.02.15 |
20200211 / D5 / 인스턴스 끼리 값할당 시 주의사항(feat. 옵셔널체이닝) (0) | 2022.02.11 |