zoukankan      html  css  js  c++  java
  • 跳台阶算法题

    一、跳台阶题目

        1. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

         分析:从题目中可以看出青蛙每次跳到台阶有两种情况:一次跳1级和一次跳2级。

                    1.假设青蛙第一次跳了1级,那么剩下的n-1级则有f(n-1)种跳法;

                    2..假设青蛙第一次跳了2级,那么剩下的n-2级则有f(n-2)种跳法;

                    3.在台阶数为1的时候有1中跳法,台阶数为2时有两种跳法;       

                    4.综合1、2来看总的跳法有f(n)=f(n-1)+f(n-2);          

                    从这个式子看出时非彼拉切数列,所以

     

    public static int f(int n) {
            if (n==0){
                return 0;
            }else if (n==1){
                return 1;
            }else if (n==2){
                return 2;
            }else {
                return f(n-1)+f(n-2);
            }f
        }

           2.一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

              分析:1.有题中可以看出青蛙每次可以跳的台阶数为1、2、3.......n;

                         2.假设台阶为1时,f(1)=1;

                            假设台阶为2时,f(2)=f(2-1)+f(2-2); (第一次跳一阶或者第一次跳两阶);

                             假设台阶为2时,f(3)=f(3-1)+f(3-2)+f(3-3);

                                                 .

                                                 .

                             假设台阶为n-1时,f(n-1)=f((n-1)-1)+f((n-1)-2)+........f((n-1)-(n-1))=f(n-2)+f(n-3)+......................+f(1)+f(0);

                             假设台阶为n-1时, f(n)=f(n-1)+......................+f(2)+f(1)+f(0);

                         3.综上可得出,跳n阶的台阶的方法有:

                                  f(n)=f(n-1)+......................+f(2)+f(1)+f(0);

                                 把f(n-1)带到f(n)中可得到 : f(n)=f(n-1)+f(n-1)=2*f(n-1)

                                        |   0                ,(n=0)

                          f(n) =     |   1                ,(n=1)

                                        |    2*f(n-1)     ,(n>1)

     

     public static int f(int n) {
            if (n==0){
                return 0;
            }else if (n==1){
                return 1;
            } else {
                return 2*f(n-1);
            }
        }
  • 相关阅读:
    thinkphp5 模板中截取中文字符串
    .NET 操作PDF文档以及PDF文件打印摸索总结
    Mongodb 启动时 lock文件访问没有权限处理
    ASP.NET Web API 通过参数控制返回类型(JSON|XML)
    C# url 路径转换 相对路径 转换为 绝对路径
    Chrome浏览器允许跨域请求配置
    如何配置visual studio 2013进行负载测试-万事开头难
    分享:带波形的语音播放工具(wavesurfer-js)
    使用裸协议(相对协议)
    javascript ~~ 符号的使用
  • 原文地址:https://www.cnblogs.com/cqyp/p/12599852.html
Copyright © 2011-2022 走看看