斐波那契數列

今天,去深圳一家公司參加面試,其中一道編程題目就是關於斐波那契數列的問題,回來後趕快把它實現。算是積累經驗吧。當時使用遞歸方式實現的,回來後用非遞歸的方式也實現了一下。

 

// Challenge7.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

//今天面試的一道題目: 斐波那契數列求第 index 項

//遞歸
int fari1(int index)
{
	int result = 0;
	if (index == 1)
	{
		result = 0;
	}
	else if(index == 2)
	{
		result = 1;
	}
	else 
	{
		result = fari1(index - 1) + fari1(index - 2);
	}
	return result;
}

//非遞歸
int fari2(int index)
{
	int a1 = 0;
	int a2 = 1;
	if (index == 1) return a1;
	if (index == 2) return a2;
	for(int i=3; i<=index; i++)
	{
		//記錄一下前一個值
		int temp = a2;
		a2 = a1 + a2;
		a1 = temp;
	}
	return a2;
}



int _tmain(int argc, _TCHAR* argv[])
{
	printf("%d\n", fari1(30));
	printf("%d\n", fari2(30));
	getchar();
	return 0;
}


 

發佈了78 篇原創文章 · 獲贊 8 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章