엄지월드

순환(Recursion)의 개념과 기본 예제2 본문

알고리즘

순환(Recursion)의 개념과 기본 예제2

킨글 2018. 9. 16. 18:52
반응형

Tip! 코딩 테스트 시 기존에 제공되는 함수를 직접 구현하는 문제들이 나올 수 있습니다. 

아래 예제들을 확인하여 숙지하고 있으시길 바랍니다.


모든 Recursion은 반복문(iteration)으로 변경 가능합니다.

또한, 그 역도 성립하게 됩니다. 즉, 모든 반복문(iteration)은 Recursion으로 표현 가능합니다.

순환함수는 복잡한 알고리즘을 단순하고 알기쉽게 표현하는 것을 가능하게 합니다.

하지만 함수 호출에 따른 오버해드가 있습니다(매개변수 전달, 엑티베이션 프레임 생성 등)



public class Recursion_2 {

// 1. 문자열의 크기를 구하는 방법.

public static int length(String str){

if(str.equals(""))

return 0;

else

1 + length(str.substring(1));

}


// 2. 문자를 출력하는 방법

public static void printChar(String str){

if(str.equals(""))

return;

else{

System.out.print(str.charAt(0));

printChar(str.substring(1));

}


// 3. 문자를 반대로 출력하는 방법

public static void printCharReverse(String str){

if(str.equals(""))

return;

else{

printChar(str.substring(1));

System.out.print(str.charAt(0);

}

}


// 4. 이진수를 출력하는 방법

public static void printInBinary(int n){

if(n < 2)

System.out.print(n); // n값이 2이하이면 0, 1이므로 계산할 필요가 없기 때문에 바로 출력해줍니다.

else{

printInBinary(n/2); // 가장 낮은 수부터 순차적으로 처리돼야 하기 때문에 print문 보다 위에 있어야 합니다.

System.out.print(n%2);

}

}


// 5. 배열 뒤에 숫자부터 덧셈 방법 

public static int sum(int virtualArrSize, int data[]){ 

if(virtualArrSize<=0)

else

sum(virtualArrSize-1, data) + data[virtualArrSize-1];

}

'알고리즘' 카테고리의 다른 글

[백준] 2178 미로 탐색 (BFS)  (0) 2022.07.27
기술면접 준비  (0) 2022.07.08
그리디 알고리즘  (0) 2022.06.28
팰린드롬  (0) 2022.06.17
순환(Recursion)의 개념과 기본 예제1  (0) 2018.09.16
Comments