
입력: 제 1항, 제 2항, 제 3항, 구하려는 항의 수(N) 출력: 제 N항
#include <stdio.h>
int a,b,c,n;
int new_fibo(n){
    if(n==1){
        return a;
    }else if(n==2){
        return b;
    }else if(n==3){
        return c;
    }else{
        return new_fibo(n-1)+new_fibo(n-3);
    }
}
int main() {
    scanf("%d %d %d %d",&a,&b,&c,&n);
    int ret=new_fibo(n);
    printf("%d",ret);
    return 0;
}
코드 설명
a,b,c,n을 입력받는다.
new_fibo() 함수 : n==1이면 a를 리턴, n==2이면 b를 리턴, n==3 이면 c를 리턴한다.
3보다 큰 수에 대해서는 new_fibo(n-1)+new_fibo(n-3)을 재귀적으로 리턴한다.
입력: 제 1항, 제 2항, 제 3항, 구하려는 항의 수(N) 출력: 제 N항
#include <stdio.h>
int a,b,c,n;
int main() {
    scanf("%d %d %d %d",&a,&b,&c,&n);
    int ret=0;
    if(n==1){
        ret=a;
    }else if(n==2){
        ret=b;
    }else if(n==3){
        ret=c;
    }else{
        int tmpSum=0;
        for(int i=4; i<=n;i++){
            tmpSum=a+c;
            a=b;
            b=c;
            c=tmpSum;
        }
        ret=tmpSum;
    }
    printf("%d",ret);
		return 0;
}
코드설명