此题的意思很明显,要用递归做。

程序代码:
#include <stdio.h>
#include <stdlib.h>
int f(int n)
{
    if(n==0)  return 0;
    if(n==1)  return 1;
    if(n==2)  return 2;
    //if(n<3)  return n;
    return 2*f(n-1)+f(n-2)*f(n-3);  //n>=3
}
int main()
{
    int n;
    printf("Input n(13>=n>=2):");
    scanf("%d",&n);
    printf("f(%d)=%d\n",n,f(n));
    return 0;
}
当然,像你那样一次性全部计算出来也可以,但要注意数组下标和i的值的问题。

程序代码:
#include<stdio.h>
int main()
{
    int n,i;
    int f[14];
    
    printf("Input n(13>=n>=2):");
    scanf("%d",&n);  //%d,输入格式错误
    
    for(i=0;i<=n;i++)
    {
        if(i==0)
        {
            f[i]=0;
        }
        else if(i==1)
        {
            f[i]=1;
        }
        else if(i==2)
        {
            f[i]=2;
        }
        else
        {
            f[i]=2*f[i-1]+f[i-2]*f[i-3];
        }
    }
    
    printf("\nf(%d)=%d",i-1,f[i-1]);  //for循环后i=n+1
    //printf("\nf(%d)=%d",n,f[n]);  //此句更直接
    return 0;
}
[此贴子已经被作者于2016-3-5 19:54编辑过]