斐波那契數列的四種實現方式(C語言)
阿新 • • 發佈:2018-12-16
斐波那契數列是一組第一位和第二位為1,從第三位開始,後一位是前兩位和的一組遞增數列,
像這樣的:1、1、2、3、5、8、13、21、34、55…
今天,我們用四種方式來進行實現:
1.遞迴
int Fibon1(int n) { if (n == 1 || n == 2) { return 1; } else { return Fibon1(n - 1) + Fibon1(n - 2); } } int main() { int n = 0; int ret = 0; scanf("%d", &n); ret = Fibon1(n); printf("ret=%d", ret); return 0; }
2.非遞迴
int Fibno2(int n)
{
int num1 = 1;
int num2 = 1;
int tmp = 0;
int i = 0;
if (n < 3)
{
return 1;
}
else
{
for (i = 0; i>n-3; i++)
{
tmp = num1 + num2;
num1 = num2;
num2 = tmp;
}
return tmp;
}
}
3.陣列
public int Fibno3(int n) { List<int> list = new List<int>(); list.fib(1); list.fib(1); int count = list.Count; while (count < n) { list.fib(list[count - 2] + list[count - 1]); count = list.Count; } return list[count - 1]; }
4.佇列
public int Fibno4(int n)
{
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(1);
for (int i = 0; i <= n - 2; i++)
{
queue.Enqueue(queue.AsQueryable().First() + queue.AsQueryable().Last());
queue.Dequeue();
}
return queue.Peek();
}
執行結果: