码迷,mamicode.com
首页 > 其他好文 > 详细

青蛙跳台阶

时间:2014-12-02 11:45:48      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:sp   for   on   问题   bs   代码   时间   算法   nbsp   

问题描述:

一只青蛙一次可以跳上一个台阶或者两个。求该青蛙跳上一个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;
    }

   
}

 

 

思考:

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

青蛙跳台阶

标签:sp   for   on   问题   bs   代码   时间   算法   nbsp   

原文地址:http://www.cnblogs.com/Mr-Zhong/p/4137021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!