运行超时,有啥简单的方法
#include
long long function(long long n);
main()
{
long long n,y;
scanf("%lld",&n);
if(n<1||n>1000000)
return 0;
if(n==1||n==2)
y=1;
else y=function(n);
printf("%lld",y);
}
long long function(long long n)
{
long long f;
if(n==1||n==2)
f=1;
else f=function(n-1)+function(n-2);
return f;
}
直接循环算,递归开销大,费时间。
n范围太大,longlong装不下
int main()
{
long long n, y = 1, a = 1, b, i;
scanf("%lld", &n);
if (n < 1 || n > 1000000)
return 0;
for (i = 3; i <= n; i++)
{
b = y;
y += a;
a = b;
}
printf("%lld", y);
}