Algorithm/Baekjoon
[백준 알고리즘][자바] 10870번 : 피보나치 수 5
hyunipad
2021. 10. 23. 13:55
반응형
https://www.acmicpc.net/problem/10870
재귀 함수를 이용한 피보나치 수 구하기 문제입니다.
이번 문제는 친절히도 문제속에 N = 17일 때까지의 수가 나열되어 있습니다.
- Fibonacci(N) = Fibonacci(N-1) + Fibonacci(N-2) (단, N >= 2)
피보나치 수의 공식은 위와 같고, 공식의 해석은 2번째 피보나치 수부터는 바로 앞의 두 피보나치 수의 합이 됩니다.
위의 공식을 그대로 리턴 값으로 적고 N = 0, N = 1 일때 만 따로 조건을 걸어주면 됩니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
// 백준 알고리즘 10870번
// 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.
// 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.
// n=17일때 까지 피보나치 수를 써보면 다음과 같다.
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
// n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. (재귀함수이용)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int N_pibonacci = N_pibonacci(N);
bw.write(String.valueOf(N_pibonacci));
br.close();
bw.flush();
bw.close();
}
public static int N_pibonacci(int N) {
if(N == 0) {
return 0;
}else if(N == 1) {
return 1;
}else {
return N_pibonacci(N - 1) + N_pibonacci(N - 2);
}
}
}
반응형