zoukankan      html  css  js  c++  java
  • 青蛙跳台阶

    问题描述:

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

       
    }

    思考:

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

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    AngularJS(3)-过滤器
    AngularJS(2)-Scope作用域和控制器
    iOS局部刷新
    python(一)入门
    Java基础
    AngularJS(1)随笔
    mac下如何查看指定端口被谁占用并且杀死该进程
    Python 字节码bytecode
    Python 作用域和命名空间
    Python函数的默认参数的设计【原创】
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4137021.html
Copyright © 2011-2022 走看看