菲波那切數列

題目:寫一個函數,輸入n,求菲波那切數列(Fibonacci)的第n項

菲波那切數列的定義如下:


說明:除了第0項爲0,第一項爲1,第n項都爲前倆項之和



代碼如下:

//1.遞歸求解思路會更清晰,可是當數字爲100時,此時一個數它計算了多次,遞歸的效率太低;
//2.解決上述問題,則採用循環;
//3.但採用循環,當你數字太大時,此類型無法存儲大數,此時得去考慮大數問題
//此處不考慮大數問題了
#include<stdio.h>

//遞歸
int Fibonacci(unsigned int num)
{
	if (num == 0 || num == 1)
	{
		return num;
	}
	return Fibonacci(num - 1) + Fibonacci(num - 2);
}

//循環
unsigned long long Fibonacci2(unsigned long long num)
{
	unsigned long long first_num = 0;
	unsigned long long next_num = 1;
	unsigned long long third_num = 0;

	if (num == 0 || num == 1)
	{
		return num;
	}
	while (num >= 2)
	{
		third_num = first_num + next_num;
		first_num = next_num;
		next_num = third_num;
		--num;
	}
	return third_num;
}

//代碼測試:
int main()
{
	printf("Fibonacci(11):%d\n", Fibonacci(11));
	printf("Fibonacci2(11):%d\n", Fibonacci2(11));
	return 0;
}

結果如下圖所示:



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