본문 바로가기
Java/기초 Java

[기초 자바] 피보나치 수열

by 호두빵 2021. 5. 13.
package java0513;

import java.util.Arrays;

public class fibonacci {

	public static void main(String[] args) {
	
		
		long a, b, c;
		long arrNum[] = new long[30];
		
		a = 1;
		b = 3;
		
		arrNum[0] = a;
		arrNum[1] = b; 
		
		int w = 0;
		while(w<28) {
			
			c = a+b;
			
			arrNum[2+w] = c;
			
			a = b;
			b = c;
			
			w++;
		}
		
		System.out.println(Arrays.toString(arrNum));
	}

}

정말 정말 기본적인 피보나치수열 개념입니다. long형의 숫자 3개를 a,b,c로 만들어줍니다. 그리고 나서 이 숫자들을 담을 배열을 길이 30으로 하나 만들어주고요, 배열의 0번째에는 a가, 1번째에는 b가 들어가게 해줍니다. 우리가 피보나치 수열을 통해서 얻고자 하는 것은 처음 두 항을 더해서 새로운 값을 하나 만들어 낸 다음에 그 다음부터는 인접하는 숫자끼리 계속해서 더해가게끔 하는 것이죠. 예를 들어 1 2 이런식으로 숫자가 있다면 피보나치수열을 통해서는 1, 2, 3, 5, 8,,,, 쭉 나아가게 되는 것이죠. 코딩으로도 피보나치수열을 만들어낼 수 있습니다. 

 

a와 b는 이미 지정해준 상태이고 c는 a+b의 값으로 합니다. 그 후 arrNum[2+w] = c; 로 해주는데 여기서 2를 더해주는 이유는 이미 arrNum[0]과 arrNum[1]이 1과 2의 값으로 차있기 때문입니다. 

 

a     b      c

1 +  2 => 3

      a      b      c

      2  +  3 => 5

              a      b      c

              3  +  5 => 8    

 

a와 b를 더해서 c값이 나왔습니다. 그러면 이제 기존의 a값은 b가 되고, b는 c가 되어 계속해서 연산이 이어져나가게 됩니다. 총 30개를 만들것이므로 while(w<28), 즉 28번 연산하라는 조건도 더해줍니다. 각 연산이 끝날 때마다 w가 하나씩 증가하므로 배열이 30개로 찰때까지 연산을 쭉 반복해서 원하는 결과값을 얻어낼 수 있겠습니다.