这个是自己写错的,递归可能会溢出,所以要将定义为long long---输出用%ld;
#include <stdio.h>
void f(int x)
{
if(x==1)
return 1;
else if(x==2)
return 2;
else
{
return f(x-1)+f(x-2)*2;
}
}
int main()
{
int T;
scanf("%d",&T);
int i,a[T];
for(i=0;i<T;i++)
{
scanf("%d",&a[i]);
}
printf("%d",f(int n));
return 0;
}
下面是AI改过的
#include <stdio.h>
long f(int x)
{
if(x==1)
return 1;
else if(x==2)
return 2;
else
return f(x-1)+f(x-2)*2;
}
int main()
{
int T;
scanf("%d",&T);
for(int i=0;i<T;i++)
{
int n;
scanf("%ld",&n);
printf("%ld\n",f(n));
}
return 0;
}
%ld是 long int的输入格式
%lf 是double的输入格式
所以用 int 定义一个变量输入输出时候,可以用 %d 也可以用 %ld