on
[백준 알고리즘][자바] 10870번 : 피보나치 수 5
[백준 알고리즘][자바] 10870번 : 피보나치 수 5
728x90
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); } } }
728x90
from http://hyunipad.tistory.com/84 by ccl(A) rewrite - 2021-10-23 14:01:44