剑指Offer之面试题9:斐波那契数列

来源:互联网 发布:java wait time 编辑:程序博客网 时间:2024/06/07 02:04

所有代码均通过G++编译器测试,仅为练手纪录。


// 面试题9:斐波那契数列

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

//      F(0) = 0

//      F(1) = 1;

//      F(n) = F(n-1)+F(n-2)n>1;


// 面试题9:斐波那契数列//题目一:写一个函数,输入n,求斐波那契(Fibonacci)数列的第N项。斐波那契数列的定义如下://      F(0) = 0;//      F(1) = 1;//      F(n) = F(n-1)+F(n-2)(n>1);// 递归实现unsigned long Fibonacci_Recursive(int n){    if (0 >= n)    {        return 0;    }    else if(1 == n)    {        return 1;    }    else    {        return Fibonacci_Recursive(n-1) + Fibonacci_Recursive(n-2);    }}//非递归实现unsigned long Fibonacci(int n){    if(n<2)    {        if(1 == n)        {            return 1;        }        else        {            return 0;        }    }        unsigned long nFirstValue  = 0;    unsigned long nSecondValue = 1;        unsigned long nTargetValue = 0;        for(int i = 2;i<=n;++i)    {        nTargetValue = nFirstValue + nSecondValue;                nFirstValue  = nSecondValue;        nSecondValue = nTargetValue;    }        return nTargetValue;}//题目二:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个N级的台阶总共有多少种跳法。unsigned long CountJumpStepNum_Recursive(int n){    if(n<=0)    {        return 0;    }    else if (1 == n)    {        return 1;    }    else if (2 == n)    {        return 2;    }    else    {        return CountJumpStepNum_Recursive(n-1)+CountJumpStepNum_Recursive(n-2);    }}void TestFiboncci(){    int n = 10;    LogInfo("Fibonacci:%lu",Fibonacci(n));    LogInfo("Fibonacci_Recursive:%lu",Fibonacci_Recursive(n));    LogInfo("CountJumpStepNum_Recursive:%lu",CountJumpStepNum_Recursive(n));}

ZhaiPillary

2016-12-24



0 0