본문 바로가기

Java/Java 알고리즘

[알고리즘] 1-2. 재귀함수 응용

반응형

수학적 계산 외에도 사용하는 재귀함수

 

 

모든 순환함수는 반복문으로 변경 가능 -> 성능을 위해

모든 반복문은 순환함수로 변경 가능    -> 단순화를 위해

[함수 호출에 따른 성능 저하 발생 가능하므로]


  1. 문자열 길이 계산
  2. 문자열 출력
  3. 문자열 뒤집어 출력
  4. 2진수로 변환 출력
  5. 배열의 합 구하기
  6. 데이터 파일로부터 n개의 정수 읽어오기
//1. 문자열 길이 계산
//이전 문자열 길이 +1
public static int length(String str) {
 if (str.equals(""))
  return 0;
 else
  return 1+ length(str.substring(1));
}

 

 

//2. 문자열 출력
public static void printChars (String str) {
 if (str.length() ==0)
  return;
 else {
  System.out.println(str.charAt(0));
  printChars(str.substring(1));
 }
}

 

//3. 문자열 뒤집어 출력
// (1) 첫 글자를 제외한 문자열을 뒤집어 출력
// (2) 마지막으로 첫 글짜를 출력

public static void printCharsReverse(String str) {
 if (str.length()==0)
  return;
 else {
  printCahrsReverse (str.substring(1));
  System.out.println(str.charAt(0));
 }
}

 

//4. 2진수로 변환해 출력
// (1) n을 2로 나눈 몫을 2진수로 변환해 출력
// (2) n을 2로 나눈 나머지 출력

public void printInBinary(int n) {
 if (n<2)
  System.out.println(n);
 else {
  printInBinary(n/2);
  System.out.println(n%2);
 }
}

 

//5. 배열의 합 구하기

public static int sum (int n, int[] data) {
 if (n<=0)
  return 0;
 else
  return sum(n-1, data) + data[n-1];
}

 

//6. 데이터 파일로부터 n개의 정수 읽어오기

public void readFrom(int n, int [] data, Scanner in) {
 if (n==0)
  return;
 else {
  readFrom(n-1, data, in);
  data[n-1] = in.nextInt();
 }
}

 

 

반응형