피보나치 수열 구하기

2016. 1. 10. 11:15Algorithm Solution


< 피보나치 수열 구하기 JAVA>



< 피보나치의 개념 >

<출처 : http://terms.naver.com/entry.nhn?docId=2270442&cid=51173&categoryId=51173 <네이버 지식백과>



Hiyo(main class).java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package practice;
 
import Solution.Fibonacci;
 
public class Hiyo {
 
    public static void main(String[] args) {
        int[] arr = new int[10];
        Fibonacci f = new Fibonacci(arr);
        f.print();// 배열 출력하기
    }
 
}
 
cs


FIbonacci.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package Solution;
 
public class Fibonacci {
 
    int[] arr;
 
    public Fibonacci() {
 
    }
 
    public Fibonacci(int[] arr) {
        this.arr = arr;
    }
 
    public void execute() {
        arr[0= 1// 초기값
        arr[1= 1;
        int result = 0// 더한 결과 값
        for (int i = 0; i < arr.length; i++) {
            if (i < arr.length - 2) {
                result = arr[i] + arr[i + 1]; // 배열 첫번째와 그 다음 배열을 더한다.
                arr[i + 2= result; // 그 값을 첫번째 값 다다음 값에 입력한다.
            } else {// 배열의 (마지막 배열-1)번째 일 때
                break;
            }
 
        }
    }
 
    public void print() {
        execute(); // 피보나치 수열 배열에 입력하기
        for (int i : arr) { // 배열의 값을 출력하기
            System.out.print(i + " ");
        }
        System.out.println();
    }
}
 
cs



원래는 재귀함수를 쓰려다가 너무 흔한것 같아서 다른 방법으로 해보려고 이렇게 구현하였습니다. 

재귀함수는 이렇게 구현하면 되는군요. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package practice;
 
public class Hiyo {
    public static int Fibonacci(int num) {
        if (num == 1 || num == 2) {
            return 1;
        } else {
            return Fibonacci(num - 1+ Fibonacci(num - 2);
        }
    }
 
    public static void main(String[] args) {
        int num = 11;
        for (int i = 1; i < num; i++) {
            System.out.println(Fibonacci(i));
        }
    }
 
}
 
cs


도움이 되었을지 모르겠네요! 

쉬운문제 앞으로 차근차근 해보려고 합니다. 모두 공부 열심히 해요 ㅋㅋㅋ 



****추가 내용 *****

(2016.12.05 월)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * Created by nhs0912 on 2016-12-05.
 */
public class Main {
 
    public static int Fibonacci(int num) {
        if (num == 1 || num == 2) {
            return 1;
        } else {
            return Fibonacci(num - 1+ Fibonacci(num - 2);
        }
    }
 
    public static void main(String[] args) {
        int num = 10;
        int sum=0;
        for (int i = 1; i < num; i++) {
            if(i==num-1)
            {
                sum+=Fibonacci(i);
                System.out.println(Fibonacci(i)+"="+sum);
            }
            else if(i==1)
            {
                sum=1;
                System.out.print("0+1+");
            }
            else {
                sum+=Fibonacci(i);
                System.out.print(Fibonacci(i) + "+");
            }
        }
    }
}
 
cs

결과값: 

피보나치 수열 과정도 같이 보이게 수정하였습니다.
알고리즘 어렵지만 해보면 재밌긴 하네요 ㅋㅋㅋ 


'Algorithm Solution' 카테고리의 다른 글

백준 1152번 단어의 갯수 세기 문제<java>  (0) 2016.12.07
Prime Number(소수) 구하기 java  (0) 2016.01.13
<30계단>angle(open)  (0) 2015.10.24
<30계단> maxandmin  (0) 2015.10.24
<30계단> coci_slatkisi(사탕 먹기)  (0) 2015.10.24