【求助】斐波那契数列优化算法
要求输入0<=N<=50,输出斐波那契数列第N项的值。#include<stdio.h>
int fn(int x)
{
if(x<=1){
return x;
}
else if(x==2){
return 1;
}
else {
return fn(x-1)+fn(x-2);
}
}
int main()
{
int a;
scanf("%d\n",&a);
a=fn(a);
printf("%d\n",a);
return 0;
}
这是我写的源码,在编译器上试过结果没问题,但运行时间太长,所以这个练习就过不了关(一学习编程的网站)。我考虑可能是每次都要判断是否小于等于1,从而导致时间延长,但又不知道怎么改进会更好些,不知坛里的大神们可否指点迷津。