[알고리즘] 순환(Recursion) 02
순환(Recursion)
인프론 강의를 보면서 연습하고 기록하고 있습니다
문자열의 길이 계산
public class Test {
public static void main(String[] args) {
System.out.println("문자열의 길이 : "+length("abc"));
}
public static int length (String str) {
if(str.equals("")) {
return 0;
}else {
System.out.println(str);
return 1+length(str.substring(1));
}
}
}
abc
bc
c
문자열의 길이 : 3
문자열의 프린트
public class Test {
public static void main(String[] args) {
printChars("PRINT");
}
public static void printChars (String str) {
if(str.length()==0) {
return;
}else {
System.out.println(str.charAt(0));
printChars(str.substring(1));
}
}
}
P
R
I
N
T
문자열 뒤집어 프린트
public class Test {
public static void main(String[] args) {
printCharsReverse("ABCDE");
}
public static void printCharsReverse (String str) {
if(str.length()==0) {
return;
}else {
printCharsReverse(str.substring(1));
System.out.println(str.charAt(0));
}
}
}
E
D
C
B
A
2진수로 변환하여 출력
public class Test {
public static void main(String[] args) {
printInBinary(2);
}
public static void printInBinary (int n) {
if(n<2) {
System.out.print(n);
}else {
printInBinary(n/2);
System.out.print(n%2);
}
}
}
10
배열의 합 구하기
public class Test {
public static void main(String[] args) {
int[] data = {1,2,3};
System.out.println("배열의 합 : " + sum(data.length, data));
}
public static int sum (int n, int[] data) {
if(n<=0) {
return 0;
}else {
//data[0]에서 data[n-1]까지의 합을 반환
System.out.println(data[n-1]);
return sum(n-1, data) + data[n-1];
}
}
}
3
2
1
배열의 합 : 6
데이터파일로 n개의 정수 읽어오기
//Scanner in이 참조하는 파일로부터 n개의 정수를 입력받아
//배열 data[0],....,data[n-1]에 저장
public static void readFrom (int n, int[] data, Scanner in) {
if(n==0) {
return;
}else {
readFrom(n-1, data, in);
data[n-1] = in.nextInt();
}
}