美文网首页
7.2走楼梯

7.2走楼梯

作者: FiveZM | 来源:发表于2020-04-02 21:10 被阅读0次

    有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶,2阶,3阶,请实现一个方法,计算小孩有多少种上楼梯的方式.
    为了防止溢出,请将结果模以mod 1000000007

    给定一个正整数int n,请返回一个数,代表上楼的方式数.
    保证n小于等于100000.

    
    
    什么是递归,看起来是从上往下处理问题,这是现象,
    实际上是从小往上处理问题,这是本质.
    执行完最小最小的那个不可分割的问题,然后返回一个数值用于上一层使用,这就是递归的核心思想.
    
    递归解法思路:
    最小的不可分割问题有3个
    第一个,当台阶n == 0时,此时有1种走法,就是不动.
    第二个,当台阶n==1时,有1种走法,即走1步.
    第三个,当台阶n==2时,有2种走法,即一步一步上去,或者一下子走两步.
    
    有了这三个基本问题后,剩下的就是类似的子问题.
    当n == 3时,如果先走1步,那么就剩下两阶,从这三个基本问题中的n==2可以得出结果,如果要走上第三阶,那么就有2种走法.
    如果先走2步,那么就剩下一阶,从这三个基本问题中的n==1中可以得出结果,如果要走上第三阶,有1种走法.
    如果先走3步,那么就剩下零阶,从这三个基本问题中的n==0中可以得出结果,即只有1种走法.
    那么n == 3时,一共有1+1+2=4种走法,依次类推.
    从子问题到大问题,就是递归的思想,每次return返回的都是下面一层的值,返回到上一层来使用
    
    
    图片.png
        迭代的思想:
        何为之迭代,即在知道循环的次数之后,用循环来实现递归的解法.
    第一步就是先初始化基本条件.
    第二步,循环,使用基本条件来不断更新下一个循环的值
    
    package _7节;
    
    public class _7_2爬楼梯 {
        public static void main(String[] args) {
            System.out.println(climbFloor(5));
            System.out.println(climbFloor(5));
        }
    
        /*
            递归
         */
        public static int climbFloor(int n) {
            if (n < 0)
                return 0;
            if (n == 0 || n == 1)
                return 1;
            if (n == 2)
                return 2;
            return climbFloor(n - 1) + climbFloor(n - 2) + climbFloor(n - 3);
        }
    
        /*
            迭代,即循环,知道循环的次数
         */
        public static int climbFloorDiedai(int n) {
            if (n < 0)
                return 0;
            if (n == 0 || n == 1)
                return 1;
            if (n == 2)
                return 2;
            if (n == 3)
                return 4;
            int n1 = 1;
            int n2 = 2;
            int n3 = 4;
    
            for (int i = 4; i <= n; i++) {
                int _n1 = n1;
                n1 = n2;
                n2 = n3;
                n3 = ((n1 + n2) % 1000000007 + _n1) % 1000000007;
            }
            return n3;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:7.2走楼梯

          本文链接:https://www.haomeiwen.com/subject/dpvfphtx.html