斐波那契數列的兩種實現方法(遞歸、非遞歸),C

斐波那契數列定義:

F_{n} = F_{n - 1} + F_{n - 2} \quad (n \geqslant 3)

代碼實現的時候有兩種方法,非遞歸實現和遞歸實現

 

非遞歸實現:

聲明三個整數變量 a, b, c (由於當 n 較大時 F(n) 會很大,所以 a, b, c 在聲明的時候一步到位直接 unsigned long long)

把 a + b 賦給 c , 之後再把 b 賦給 a , c 賦給 b ;
同時把 n 減一

執行上述步驟直到 n 減到 1 爲止
//C語言非遞歸實現斐波那契數列

#include <stdio.h>

int main(int argc, char *argv[])
{
	int n;
	scanf("%d", &n);
	unsigned long long a, b, c;
	a = 1;
	b = 1;
	while (n-- > 2) {
		c = a + b;
		a = b;
		b = c;
	}
	printf("%llu\n", c);
	return 0;
}

 

遞歸實現:

//C語言遞歸實現斐波那契數列

#include <stdio.h>

unsigned long long fbnq(int n);

int main(int argc, char *argv[])
{
	int n;
	scanf("%d", &n);
	printf("%llu\n", fbnq(n));
	return 0;
}

unsigned long long fbnq(int n)
{
	if (n <= 2)
		return 1; /* F(1) = F(2) = 1 */
	else 
		return (fbnq(n - 1) + fbnq(n - 2));
}

 

 

 

...以上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章