영원히 흘러가는 강
백준 알고리즘 재귀 본문
728x90
10872
팩토리얼!
import java.util.Scanner;
class main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int sum=fac(n);
System.out.println(sum);
}
public static int fac(int n) {
if(n==1) {
return 1;
}
else
return n*fac(n-1);
}}
10870
피보나치 수 (n-2)+(n-1)로 이어짐
import java.util.Scanner;
class main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(fibo(n));
}
public static int fibo(int n) {
if(n<=1) {
return n;
}
else
return fibo(n-2)+fibo(n-1);
}}
재귀 호출의 기본이지만 재귀는 항상 어려운듯하다...
점화식은 2^n-1
11729
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class main {
public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
sb.append((int) (Math.pow(2, N) - 1)).append('\n');
Hanoi(N, 1, 2, 3);
System.out.println(sb);
}
/*
N : 원판의 개수
start : 출발지
mid : 옮기기 위해 이동해야 장소
to : 목적지
*/
public static void Hanoi(int N, int start, int mid, int to) {
// 이동할 원반의 수가 1개라면?
if (N == 1) {
sb.append(start + " " + to + "\n");
return;
}
// STEP 1 : N-1개를 A에서 B로 이동
Hanoi(N - 1, start, to, mid);
// STEP 2 : 1개를 A에서 C로 이동
sb.append(start + " " + to + "\n");
// STEP 3 : N-1개를 B에서 C로 이동
Hanoi(N - 1, mid, start, to);
}
}
bufferedreader 에 대한 거는 따로 게시.
728x90
'알고리즘' 카테고리의 다른 글
백준 알고리즘 스택 (0) | 2020.10.14 |
---|---|
백준 알고리즘 브루트 포스 (0) | 2020.10.08 |
백준 알고리즘 (0) | 2020.10.07 |
코드업 100제 (1096~1099) (0) | 2020.09.28 |
코드업 100제 (1091~1095) (0) | 2020.09.25 |
Comments