今天,去深圳一家公司参加面试,其中一道编程题目就是关于斐波那契数列的问题,回来后赶快把它实现。算是积累经验吧。当时使用递归方式实现的,回来后用非递归的方式也实现了一下。
// 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;
}