본문 바로가기

Algorithm/CodeUp

[CodeUp_Java] Q1915 : 피보나치 수열

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅의 주제는 Q1915 : [기초-재귀함수] 피보나치 수열 (자바, JAVA)입니다.

Intro

Question

문제 설명

입력

자연수 N이 입력된다. (N은 20보다 같거나 작다.)

출력

N번째 피보나치 수를 출력한다.

예시

  • 입력 : 7
  • 출력 : 13

Solution (풀이)

  • 풀이 : 메모리 11160, 시간 : 66
public class Answer1 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int count = Integer.parseInt(br.readLine());

        loop(0, count, 1, 2); // 인덱스, 입력받은 숫자, 이전, 이후를 초기 상태로 넘기기
    }

    public static void loop(int index, int count, int bef, int aft) {
        if (count==1 || count==2) { // count가 1,2인 경우에는 1출력 후 리턴
            System.out.println(1);
            return;
        } else if (count ==3 ){ // count가 3인 경우에는 2출력 후 리턴
            System.out.println(2); 
            return;
        }

        if (index+4>=count) { // index+4인 이유는 count가 3까지는 바로 return 하기 때문
            System.out.println(bef+aft);
        } else {
             // index를 +1해주고, 이전 정수 bef자리에 aft를 넘기고, 이후 aft를 before와 합친다.
            loop(index+1, count, aft, bef+aft);
        }

    }

}

Ranking(순위)

반응형