본문 바로가기
Algorithm/Baekjoon

[백준 알고리즘][자바] 10870번 : 피보나치 수 5

by hyunipad 2021. 10. 23.
반응형

https://www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

재귀 함수를 이용한 피보나치 수 구하기 문제입니다.

이번 문제는 친절히도 문제속에 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);
		}
	}

}

 

반응형

댓글