c语言–函数的递归调用

已知某数列为:
F(0)=F(1)=1; F(2)=0;
F(n)=F(n-1)-3F(n-2)+2F(n-3) (n>2)
要求:使用递归法编写这个函数,然后输出F(0)~F(10),求其中的最大值和最小值、值为0的项的个数以及调用这个函数的总次数。

/*
已知某数列为:
F(0)=F(1)=1; F(2)=0;
F(n)=F(n-1)-3F(n-2)+2F(n-3) (n>2)
要求:使用递归法编写这个函数,然后输出F(0)~F(10),求其中的最大值和最小值、值为0的项的个数以及调用这个函数的总次数。
*/
#include <stdio.h>

int count = 0;
int F(int n)
{
    count++;
    if(n==0 || n==1)
        return 1;
    if(n==2)
        return 0;
    return F(n-1)-3*F(n-2)+2*F(n-3);
}

int main()
{
    int i=0,max,min,d,num=0;
    for(i=0;i<=10;i++)
    {
        d = F(i);
        if(i==0)
            max = min = d;
        else 
        {
            if (max < d)
                max = d;
            if(min > d)
                min = d;
        }
        if(d == 0)
            num++;
        printf("F(%d)=%d\n",i,d);
    }
    printf("max=%d,min=%d\n",max,min):
    printf("0的数量为%d\n",num);
    printf("共调用函数%d次\n",count);
    return 0;
}

#include <stdio.h>
int cnt;
int f(int n) {
    cnt++;
    if(n == 0 || n == 1)
        return 1;
    if(n == 2)
        return 0;
    if(n > 2)
        return f(n - 1) - 3 * f(n - 2) + 2 * f(n - 3);
}
int main() {
    int a[11],i,j,t,zero=0;
    for(i=0;i<11;i++){
        a[i] = f(i);
    }
    
    for(i=0;i<10;i++){
        for(j=0;j<10-i;i++){
            if(a[j]>a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        } 
    }
    for(i=0;i<11;i++){
        if(a[i] == 0){
            zero ++;    
        }
    }
    printf("最大值:%d 最小值:%d 值为0的个数:%d 调用次数:%d",a[10],a[0],zero,cnt);
    return 0;
}