알고리즘(BOJ)/Silver

백준-10870 (재귀)

ch.0 2022. 12. 6. 22:54


 

import java.util.Scanner;

//백준
public class Main {

	static long fibonacci(int before, int sum, int input) {
		long output=0;
		if(input>2) {

			before=sum-before;
			sum=before+sum;
			System.out.println("before: "+before + "sum: "+sum);
		return output=before+fibonacci(before,sum,input-1);	
		}else if(input==2) {
			return 1;
		}else if(input==1) {
			return 1;
		}else if(input==0) {
			return 0;
		}
			return output;

		

	}
	
	public static void main(String[] args) {
		try (Scanner sc = new Scanner(System.in)) {
			int input = sc.nextInt();
			if(input<=20&&input>=0) {
			System.out.println(fibonacci(0,1,input));
			}
		}
		

	}

}

완벽하지는 않지만 일단 풀어내긴 했다.

0+1 =1

1+1 =2

1+2 =3

2+3 =5

3+5 =8

결과값과 이전값의 뒤에 값이 더해진다는 규칙성을 가지고 풀었다

그래서 이전값과 결과값을 넘겨줘서 계속 더 하는 재귀를 짰다

문제점이 2일경우 직접 값을 넣어줘야 했다