피보나치 수열 구하기
2016. 1. 10. 11:15ㆍAlgorithm 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 |