有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。 请编程实现在第n年的时候,共有多少头母牛

/有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。
请编程实现在第n年的时候,共有多少头母牛?
/

#include <stdio.h>

int fun(int n, int *cache)
{
    if (n == 1 || n == 2 || n == 3)
    {
        return n;
    }

    if (cache[n] != -1)
    {
        return cache[n];
    }
    cache[n] = fun(n - 1, cache) + fun(n - 3, cache);
    return cache[n];
}

int countCows(int n)
{
    int cache[n + 1];
    for (int i = 0; i <= n; i++)
    {
        cache[i] = -1;
    }
    return fun(n, cache);
}

int main()
{
    int n;
    printf("please enter number: ");
    scanf("%d", &n);
    int totalCows = countCows(n);
    printf("%d year %d number\n", n, totalCows);
    return 0;
}

posted on 2024-07-05 23:43  wessf  阅读(35)  评论(0)    收藏  举报