c语言问题希望大家能给一个解答

已知一个数列从第一项开始的前三项为0、0、1,以后的各项都是其相邻的前三项之和。要求使用递归方法编写fun(n)函数,求该数列第n项的值,返回值为长整型,并写出相应的主函数


#include <stdio.h>
long fun(int n);
int main()
{
    int n;
    scanf("%d",&n);
    long res = fun(n);
    printf("%ld",res);
}

long fun(int n){
    if(n == 1 || n == 2) return 0;
    if(n == 3) return 1;
    return fun(n-1) + fun(n-2) + fun(n-3); 
}