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;
        }

       
    }

    思考:

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

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    MATLAB函数大全 .
    让隐藏的virtualBox菜单重新显示
    【转载】matlab 脚本文件和函数文件
    Ubuntu下用命令行快速打开各类型文件
    关于存货的成本计价方式
    C# .net asp学习笔记
    在DLL中怎么共用一个全局变量
    如果比较表中同类型多列值是否相等?
    统计报表(用ROLLUP 汇总数据)
    UML建模
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4137021.html
Copyright © 2011-2022 走看看