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