CS/알고리즘_문제풀이(자바)

자바 피보나치 수열

Jedy_Kim 2017. 12. 21. 21:41
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;
    forint 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