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

来源:互联网 发布:危险品资格证考试软件 编辑:程序博客网 时间:2024/05/22 15:16

1.题目描述:

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

f(n)=01f(n1)+f(n2)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;}
原创粉丝点击