分别用递归和动态规划实现爬楼梯的算法

一、递归计算测试

    public int f1(int n){
        if(n==0){
            return 1;
        }
        if(n<0){
            return 0;
        }
        return f1(n-1)+f1(n-2)+f1(n-3);
    }.net

二、动态规划递归

    public String f2(int n){
        if(n < 1) return "0";
        if(n == 1) return "1";
        if(n == 2) return "2";
        if(n == 3) return "4";
        /* 若是是四个台阶,上法有7种,1-1-1-1,2-1-1,1-2-1,1-1-2,2-2,3-1,1-3
         * 可知 方法是前三种状况方法的总和 7=1+2+4
         * 经过这个规律进行计算
         */
        String [] step = new String[n];
        step[0] = "1";
        step[1] = "2";
        step[2] = "4";
        if(n<=3){
            return step[n-1];
        }
        for(int i=3;i<n;i++){
            step[i] = new BigDecimal(step[i-3]).add(new BigDecimal(step[i-2]).add(new BigDecimal(step[i-1]))).toString();
        }
        return step[n-1];
    }ci

3 测试get

    @Test
    public void testGo(){
        int r1 = f1(35);    //到35个台阶已经很慢了
        System.out.println(r1);
        String r2 = f2(35);
        System.out.println(r2);
    }class

相关文章
相关标签/搜索