728x90
피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Fibonacci { public long fibonacci(int num) { long temp, pre = 0, next = 1; for( int i =1; i < num; i++){ temp = pre; pre = next; next = temp + next; } return next; } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String[] args) { Fibonacci c = new Fibonacci(); int testCase = 3; System.out.println(c.fibonacci(testCase)); } } | cs |
피보나치 수열은 이전 수와 그 이전 수의 합을 현재 값으로 가진다.
수열을 나열해보면 0, 1, 1, 2, 3, … 순으로 문제에서 처음 값(F(0))과 두 번째 값(F(1))이 주어졌다.
문제는 두 번째 이후(F(2) 부터)를 물어봤으므로 i 는 1로 설정하여 현재(F(1) = 1, cur)와 이전 수(F(0) = 0, pre)를 더하고 F(2) 값을 구한다.
덧셈을 위해 임시 변수 temp를 생성하였고, 이 수에 F(n-2)값을 저장하고 F(n-2)자리에 F(n-1) 값을 대입한다. 쉽게 말해 한 단계씩 나아가는 것이다.
반응형
'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글
최솟값 만들기 (0) | 2017.12.29 |
---|---|
자바 행렬의 덧셈 (0) | 2017.12.28 |
자바 문자열 뒤짚기 (0) | 2017.12.22 |
자바 가운데 글자 가져오기 (0) | 2017.12.21 |
자바 최대값 : 최소값 구하기 (0) | 2017.12.21 |