形如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]);
}
這個我大一那會特別熟悉,現在居然有點忘記了。有錯誤的地方希望能幫我指出來。