PLOD

자바(JAVA) 재귀(recursion) , 반복(Iteration) 메소드 본문

개발 공부/Java

자바(JAVA) 재귀(recursion) , 반복(Iteration) 메소드

훌룽이 2022. 7. 30. 16:18

반복은 말 그대로 for 나 while을 사용해서 같은 기본연산 및 명령을 계속 반복하도록 하는 것이고,

재귀는 자기 자신을 계속 호출하는 메소드 이다.

재귀 함수는 stack 이라는 메모리 공간을 사용하는데, 반복적으로 자기 자신을 부르면서 stack에 쌓이기 때문에 메모리 상으로 않 좋다

그럼에도 사용하는 경우가 있는데 대표적으로 피보나치 수열과 , 팩토리얼 연산이 있다.

반복문으로 코드를 짜거나 알고리즘을 짜다 보면 길어서 가독성이 떨어지는 경우가 많은데 재귀는 간단한 점화식으로 구현이 가능해서 가독성이 높아지고 코드 짜기가 수월해지므로 적절한 상황에 맞춰 반복과 재귀를 사용하는 것이 중요하다,

 

반복문
재귀함수
기본
명령을 반복적으로 실행
함수 자체를 호출
조건
제어 조건이 참이라면 무한 반복 발생
조건에 수렴하지 않을 경우 무한 재귀 발생
종료
설정한 조건에 도달 할 때까지 반복 실행
함수 호출 본문에 조건부가 포함, 재귀를 호출하지 않고 함수를 강제 반환
무한 반복
무한 루프는 CPU 사이클을 반복적으로 사용
무한 재귀는 스택 오버플로우 발생
속도
빠른 실행
느린 실행
가독성
코드 길이가 길어지고 변수가 많아져 가독성이 떨어짐
코드 길이와 변수가 적어 가독성이 높아짐

 

아래는 같은 결과를 출력하는 0부터 100까지 더하는 메소드를 반복과 재귀로 표현한 것이다.

 // 반복문 

public int sum = 0; 

	for (int i = 0; i <= 100; i++) {

    sum += i; 

	} 


// 재귀

public  int sum(int x) { 

		if(x == 100) 

         return x;

else 

         return x + sum(x + 1);

 }

 

Comments