打家看看这个递归的 为什么结果要存起来 不能直接返回T 求N的阶乘的递归都不要存结果
#include<stdio.h>#include <string.h>
int step[41];
int main()
{
int a,n,c;
int f1(int x);
memset(step,0,sizeof(step)); // 初始化
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);
c=f1(a);
printf("%d\n",c);
}
}
int f1(int x)
{
int t;
if(step[x]!=0)
return step[x]; // 如果存过了, 直接返回结果
if(x==2||x==1)
t=1;
else t=f1(x-1)+f1(x-2);
step[x] = t; // 存起来
return t;
}