1. 程式人生 > >斐波那契數列的遞迴和非遞迴實現

斐波那契數列的遞迴和非遞迴實現

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<stdlib.h>

int main()

{

int a = 1;

int b = 1;

int c = 0;

int n = 0;

int i = 0;

printf("請輸入你想要計算的斐波那契數字個數\n");

scanf("%d", &n);

printf("%3d", a);

printf("%3d", b);

for (i=2; i < n; i++)

{

c = a + b;

printf("%3d", c);

a = b;

b = c;

}

system("pause");

return 0;

}

這是斐波那契數列的非遞迴演算法。接下來給大家介紹斐波那契數列的遞迴演算法,等兩個都完成之後再給大家分析一下兩種方式的空間複雜度以及時間複雜度等。

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<stdlib.h>

void Fib(int a, int b, int n)

{

if (n <= 0)

return;

else

n--;

int c = 0;

c = a + b;

a = b;

b = c;

printf("%3d"

, c);

Fib(a, b, n);

}

int main()

{

int a = 1;

int b = 1;

int c = 0;

int n = 0;

printf("請輸入您想要顯示的斐波那契數列個數\n");

scanf("%d", &n);

printf("%3d", a);

printf("%3d", b);

n = n - 2;

Fib(a, b, n);

system("pause");

return 0;

}

這是斐波那契的非遞迴演算法。