青蛙跳台阶

问题描述:

一只青蛙一次可以跳上一个台阶或者两个。求该青蛙跳上一个N级台阶有多少种方法。

 

思路解析:

如果只跳一级台阶青蛙只有一种跳法,两级就有两种。我们把n级台阶的跳法看成n的函数

记为f(n)。当n大于二时,第一次跳时有两种不同的选择:一是一次只跳一级,此时跳法数

目等于后面n-1级台阶的跳法数目,即为f(n-1);另外一种就是选择第一次跳2级,此时跳法

数目就等于后面剩下的n-2级台阶的跳法数目即为f(n-2)。总数即为f(n)=f(n-1)+f(n-2);这是

一个典型的斐波那契数列。尽量不要写递归的算法,浪费时间和空间。

 

参考代码:

long long Fibonacci(unsigned n)
{
    if (n < 2)
    {
        if (n == 1)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else
    {
        long long fib1 = 1;//f(n-1)
        long long fib2 = 0;//f(n-2)
        long long fibN = 0;//f(n)

        for(unsigned int i = 2; i <= n;i++)
        {
            fibN = fib1+fib2;
            fib2 = fib1;
            fib1 = fibN;
        }
        return fibN;
    }

   
}

 

 

思考:

以前也写过斐波那契数列,虽然不难,不过应用还是很多的,换了问题形式就不容易分析出来,知识得灵活运用。

posted @ 2014-12-02 11:33  阿木木在发呆  阅读(172)  评论(0编辑  收藏  举报