본문 바로가기

알고리즘/Algorithm

Recursion(순환)-2

반응형

 

문자열의 길이 계산 알고리즘

1
2
3
4
5
6
7
public static int lenghth(String str){
 
    if(str.equals(""))
        return 0;
    else
        return 1+lenghth(str.substring(1));
}
cs

가장 앞에 존재하는 문자 하나를 제거하고 1을 더하는 작업을 반복하여 총 문자열의 길이를 구한다.

 

 

문자열의 프린트 하는 알고리즘

1
2
3
4
5
6
7
8
public static void printChars(String str){
 
    if(str.equals(""))
        return 0;
    else
        System.out.print(str.charAt(0));
        printChars(str.substring(1));
}
cs

문자열의 길이를 구하는것과 마찬가지로 문자열의 가장 앞에 존재하는 문자를 프린트하고 substirng을 이용하여 가장 앞의 문자를 제거하는 작업을 전체 문자열이 "" 가 될때 까지 반복한다. 

문자열을 뒤집어 프린트하기

1
2
3
4
5
6
7
8
public static void printCharsReverse(String str){
 
    if(str.equals(""))
        return 0;
    else
        printCharsReverse(str.substring(1));
        System.out.pring(str.charAt(0));
}
cs

문자열 프린트 알고리즘에서 프린트하는 구문과 함수를 호출하는 부분의 순서를 다르게 하면 문자열을 뒤집어서 출력해 주는 함수가 된다.

 

첫 글자를 제외  한 나머지의 문자열을 뒤집어서 프린트 한고 마지막으로 첫번째 글자를 프린트 한다.

 

2진수로 변환하여 출력

1
2
3
4
5
6
7
8
public void printInBinary(int n){
    if(n<2)
        System.out.print(n);
    else{
        printInBinary(n/2);
        System.out.print(n%2);
    }
}
cs

음이 아닌 정수 n을 이진수로 변환하여 인쇄한다.

 

n을 2로 나눈 몫을 먼저 2진수로 변환 후 n을 2로 나눈 나머지를 인쇄한다.

 

배열의 합 구하기

1
2
3
4
5
6
public static int sum(int n, int[] data){
    if(n<=0)
        return 0;
    else
        return sum(n-1, data) + data[n-1];
}
cs

data[0]에서 data[n-1]까지의 합을 구하여 반환한다.

data[] 배열에 인자에 n-1값을 계속해서 할당하여 (n-1)-1이 되어서 전체 배열의 합을 구한다.

 

 

 

 

반응형

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

Recursion의 응용 - 미로찾기  (0) 2021.01.19
2진검색 알고리즘  (0) 2021.01.19
Recursion(순환)-3  (0) 2021.01.19
선형 시간 알고리즘  (0) 2020.07.05
Recursion(순환)-1  (0) 2020.06.27