C语言 递归函数 这个思路不太会诶

img


//递归公式:f(n)=1 0<n<4  //第一个公式,第一年,第二年,第三年,都只有1头牛        
//        f(n)= f(n-1)  + f(n-3)  n>3  // 第四年后,牛的数量由两部分构成,去年的所有牛就是f(n-1)。第二部分,只有3年以前的老牛才会生小牛,而
//每只老牛只生一只小牛,第n年所生牛的数量就应该是f(n-3)。供参考:

#include<stdio.h>
int f(int n)
{
    return (n < 4) ? 1 : f(n-1)+f(n-3);
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d", f(n));
    return 0;
}