코드
#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 |