programming

Layer7 과제 - 코드업 1916번

leesu0605 2022. 4. 12. 18:17

코드


#include <stdio.h>
using namespace std;

int n;
/*
long long int fibonacci(long long int a, long long int b){
        if(n){
                n--;
                return fibonacci(b, (a+b)%10009);
        }else
                return b;
}
*/
int main(){
        scanf("%d", &n);
        if(n<=2){
                printf("1\n");
                return 0;
        }
        n-=2;
        printf("%lld", fibonacci(1, 1));
}


· 이 문제는 n번째 피보나치 수열을 출력하는 문제이다. 따라서 함수가 호출될 때마다 n을 1씩 감소시키며 피보나치 함수의 첫 번째 인자로 '현재 채워야 할 피보나치 수열의 인덱스-1' 값을 전달하고, 두 번재 인자로 '(현재 채워야 할 피보나치 수열의 인덱스-2+현재 채워야 할 피보나치 수열의 인덱스-1)%10009'값을 전달하는 과정을 n이 0보다 클 때 동안 반복해 마지막으로 호출된 재귀함수의 두 번째 인자값을 리턴하면 정답이 나온다. 또, 첫 두 값은 1이므로, main함수에서 피보나치 함수 호출 전, n값이 2보다 작거나 같으면 1을 출력하는 예외처리를 해줘야 한다.


'programming' 카테고리의 다른 글

Layer7 과제 - 백준 10872번  (0) 2022.04.13
Layer7 과제 - 코드업 3373번  (0) 2022.04.12
Layer7 과제 - 코드업 1566번  (0) 2022.04.12
Layer7 과제 - 코드업 1555번  (0) 2022.04.11
Layer7 과제 - 코드업 1535번  (0) 2022.04.11