2.Algorithm Gossip: 費式數列
說明:Fibonacci爲1200年代的歐洲數學家,在他的着作中曾經提到:「若有一隻免子每個月生一隻小免 子,一個月後小免子也開始生產。起初只有一隻免子,一個月後就有兩隻免子,二個月後有三 只免子,三個月後有五隻免子(小免子投入生產)......。
如果不太理解這個例子的話,舉個圖就知道了,注意新生的小免子需一個月成長期纔會投入生產,類似的道理也可以用於植物的生長,這就是Fibonacci數列,一般習慣稱之爲費氏數列,例
如以下: 1、1 、2、3、5、8、13、21、34、55、89......
依說明,我們可以將費氏數列定義爲以下:
fn = fn -1 + fn -2 |
if n > 1 |
fn = n |
if n = 0, 1 |
#include <stdio.h>
#define N 20
int main()
{
int FIB[N]={0};
FIB[0]=0;
FIB[1]=1;
for (int i=2;i<N;i++)
{
FIB[i]=FIB[i-1]+FIB[i-2];
}
for (i=0;i<N;i++)
{
printf("%d\n",FIB[i]);
}
return 0;
}
遞歸算法:
#include <stdio.h>
#define N 20
int FIB(int n)
{
if (n<=1)
{
return n;
}
else
return FIB(n-1)+FIB(n-2);
}
int main()
{
for (int i=0;i<N;i++)
{
printf("%d\n",FIB(i));
}
}