본문 바로가기

Programming/Programming 알고리즘 연습

피보나치 수열(재귀X)

문제 설명

  => 피보나치 수열의 갯수를 입력받고, 해당 수열의 마지막 값과 합계, 전체 수열을 열거하시오

  => 피보나치 수열은 이전 값과 현재 값을 더한 결과가 다음 값이 되는 수열입니다.(첫수열 값은 1입니다)

    ex) 5번째 피보나치 수열을 구하시오

       1번째 : 1 / 2번째 : 0 + 1 = 1 / 3번째 : 1 + 1 = 2 / 4번째 : 1 + 2 = 3 / 5번째 : 2 + 3 = 5

       그러므로 5번째 피보나치 수열의 값은 5입니다.

 

코드 작성 방식

 1. 피보나치 수열 갯수를 입력받음

 2. 갯수만큼의 크기를 가진 배열 선언

 3. 0보다 작은 갯수는 없으므로 예외 메시지 출력 및 return

 4. 1개 일경우 초기값이 1이므로 1 반환

 5. 2개 이상일 경우 현재 배열의 -2값과 -1값을 더해 현재 값을 입력

 6. 5번의 방법을 지정된 횟수만큼 반복하여 값을 입력

 7. 형식에 맞게 출력

 

 

소스코드

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.print("피보나치 수열 갯수 지정 : ");
	int nTemp = sc.nextInt();
	int sum = 1;
		
	int[] arr = new int[nTemp];
		
	if(nTemp<=0) {
		System.out.println("잘못된 입력입니다.");
		return;
	}else if(nTemp == 1) {
		arr[0] = 1;
	}else {
		arr[0] = 1;
		arr[1] = 1;
		sum += 1;
		
		for(int i=2; i<nTemp; i +=1) {
			arr[i] = arr[i-2] + arr[i-1];
			sum += arr[i];
		}
	}
		
	System.out.println(nTemp + "번째 피보나치 수열의 값 : " + arr[nTemp-1]);
	System.out.println("값 나열 : " + Arrays.toString(arr));
	System.out.println("값들의 합 : " + sum);
}