此题的意思很明显,要用递归做。
程序代码:
#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编辑过]