ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

动态规划之Climbing Stairs(爬楼梯) java实现

2020-12-24 17:57:39  阅读:335  来源: 互联网

标签:computeWay java 递归 int second result Climbing return Stairs


问题

有一个楼梯,总共有n阶台阶。每一次,可以上一个台阶,也可以上两个台阶。问,爬这样的一个楼梯,一共有多少不同的方法?
如n=3,可以爬上这个梯子的方法有:[1,1,1],[1,2],[2,1],所以答案为3。

问题分析

动态规划的问题,我们先把问题转化为递归问题进行分析:
在这里插入图片描述
看到上面的图,大家是不是有一种熟悉的感觉,没错,这就是斐波那契数列的递归图。先通过递归方式解决问题,然后以动态规划方式解决问题。

问题解决

递归方式
public static int computeWay(int n) {
    if (n == 0 || n == 1)
        return 1;
    return computeWay(n-1) + computeWay(n-2);
}
动态规划方式
    public static int computeWayBetter(int n) {
        int[] res = {1,2};
        if (n < 2) {
            return res[n];
        }
        int first = 1;
        int second = 1;
        int result = 0;
        for (int i=2;i<=n;i++) {
            result = first+second;
            first = second;
            second = result;
        }
        return result;
    }

注意:n从0开始

标签:computeWay,java,递归,int,second,result,Climbing,return,Stairs
来源: https://blog.csdn.net/mameng1988/article/details/111630390

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有