최대 1 분 소요

반복문

일정한 명령을 일정 횟수만큼 반복하여 수행하는 명령
일반적으로 for 문 , while 문, do .. while 문이 존재

재귀함수

정의 중 자기 자신을 재참조하는 함수
전달하는 매개변수를 바꾸어 자기 자신을 호출하는 것이 특징이며,
작은 해법을 반복하여 ‘큰 문제’를 해결하기 위해 사용한다

재귀함수의 장점
가독성이 좋다!
코드가 짧아진다!
각 단계의 변수 상태가 저장되기에(스택 프레임)
변수의 상태를 파악하기 쉬워진다
코드의 논리적인 검증
재귀함수의 단점
직관적이지 않은 문제 분석과 함수 설계
탈출 지점을 제대로 설정 못하면 그대로 무한 루프
스택 오버플로우 발생 가능
(재귀가 너무 깊어지는 경우)
함수 호출에 따른 과부하

재귀함수 작성시 유의할 점 :1. 재귀를 탈출하기 위한 탈출 조건 필요!

  1. 현재 함수의 상태를 저장하는 Parameter(매개변수) 필요!
  2. return 문에 유의!
반복문이 좋은 경우도 있으니 참고
스택 오버플로우의 가능성
성능 문제가 확인되거나 발생할 가능성이 있는 경우
(재귀 함수는 반복문으로 재작성할 수 있다)
꼬리 재귀?
재귀 함수의 단점을 개선한 방식
재귀함수의 스택 오버플로우는 ‘재귀’함수의 반환값을 이용하려고
함수 스택 프레임을 유지하기에 발생함
마지막으로 재귀함수를 호출하는 경우, 해당 반환값을 재활용하지 않으므로
최적화 가능(컴파일러)
다만… 컴파일러에 따라서 지원하지 않는 경우가 있으므로 참고

댓글남기기