Java
recursion
백준 27433

- 문제를 풀때 20까지의수를 받는데 20! int형의 범위를 넘어간다
- 따라서 Long형으로 변수를 잡아야 문제를 풀수 있다.
import java.util.Scanner;
public class Main {
static long answer = 1;
static long n;
static void input(){
Scanner scanner = new Scanner(System.in);
n = scanner.nextLong();
}
static long rec_func(int k){
if(k == n+1){
return answer;
}else if(n == 0){
return 1;
} else{
answer = answer * k;
return rec_func(k+1);
}
}
public static void main(String[] args) {
input();
System.out.println(rec_func(1));
}
}
백준 10870

package 재귀;
import java.util.Scanner;
public class BOJ10870 {
static int n;
static void input(){
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
}
static int fibonach(int n){
if(n == 0){
return 0;
}else if(n == 1){
return 1;
}else{
return fibonach(n-1) + fibonach(n-2);
}
}
public static void main(String[] args) {
input();
System.out.println(fibonach(n));
}
}
백준 25501

package 재귀;
import java.util.Scanner;
public class BOJ25501 {
static StringBuilder sb = new StringBuilder();
static int answer;
static int count;
static String token;
static int n;
static int recursion(String s , int l , int r){
if(l >= r){
return 1;
}else if(s.charAt(l) != s.charAt(r)){
return 0;
}else{
count++;
return recursion(s , l+1 , r-1);
}
}
static int isPalindrome(String s){
return recursion(s , 0 , s.length() -1);
}
static void input(){
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
for(int i =0; i<n; i++){
token = scanner.next();
count = 1;
answer = isPalindrome(token);
sb.append(answer).append(" ").append(count);
sb.append("\n");
}
}
public static void main(String[] args) {
input();
System.out.println(sb);
}
}