
#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编辑过]