您的位置:首页 > 职场人生

剑指Offer面试题9[斐波那契数列]

2017-07-19 17:38 218 查看

1.题目描述:

  写出一个函数,输入整数n,求斐波那契(Fibonacci)数列的第n项。求斐波那契数列的定义如下:

f(n)=⎧⎩⎨⎪⎪01f(n−1)+f(n−2)n=0n=1n>1

2. 相关知识:

  递归算法简单易于实现、代码清晰,但效率远不如循环,在递归层次过时很容易栈溢出。但是,面试时尽可能采用递归,可以更清晰地表达解题思路。

3. 解答思路:

  可以使用递归的方法实现,但是,递归会导致很多重复的计算。所以,本题宜采用循环算法实现。

4. 代码实现:

#include<stdio.h>
long long Fibonacci(unsigned int n) {
if(n == 0) return 0;
if(n == 1) return 1;
long long result = 0;
long long minusOne = 1;
long long minusTwo = 0;
unsigned int i = 2;
for (; i<=n; i++)
{
result = minusOne + minusTwo;
minusTwo = minusOne;
minusOne = result;
}
return result;
}
int main()
{
int n[] = {3,5,10,0,1,2,40,50,100};
int i = 0;
for(i=0; i<9; i++)
printf("in: %d, out:%lld\n", n[i], Fibonacci(n[i]));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题