题目
形如1, 1, 2, 3, 5, 8, 13, 21, 34, 55的数列,后一位是前面两位相加(斐波那契数列),写出函数要求找到第 N 位是多少,如:fib(3) => 3 , fib(5) => 8, 要求时间复杂度为O(n)。
我的代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int i=0;
int fib[100]= {0};
scanf("%d",&n);
for(i=0; i<=n; i++)
{
if(i0||i1)
fib[i]=1;
else if(i>1)
fib[i]=fib[i-1]+fib[i-2];
}
printf("%d",fib[n]);
}
这个我大一那会特别熟悉,现在居然有点忘记了。有错误的地方希望能帮我指出来。