有2种算法, 递归和循环迭代, 依次介绍并比较

1.递归

1步台阶, 一种走法, 即f(1)=1;
2步台阶, 2种走法, 一步加一步或是直接跨两步, 即f(2)=2
3步台阶, 最后一次要么跨1步,要么跨2步, 一共的走法为最后一次跨1步的走法f(3-1)加上最后一次跨2步的走法f(3-2), 即f(3)=f(2)+f(1)

n步台阶, 最后一次跨1步的走法f(n-1)加上最后一次跨2步的走法f(n-2), 即f(n)=f(n-1)+f(n-2)

public class StepCount {private static int f(int n) {if (n == 1 || n == 2) {return n;} else {return f(n - 1) + f(n - 2);}}public static void main(String[] args) {long startTime = System.currentTimeMillis();    //记录初始时间System.out.println(f(40));long endTime = System.currentTimeMillis();      //记录终末时间System.out.println("所用时间: " + (endTime - startTime) + " 毫秒");}
}

走40步台阶耗时256毫秒

2.循环迭代

private static int f(int n) {if (n == 1 || n == 2) {return n;}//初始化为走到第二级台阶的走法int one = 2;//初始化为走到第一级台阶的走法int two = 1;int sum = 0;for (int i = 3; i <= n; i++) {//最后跨两步+最后跨一步的走法sum = two + one;two = one; //之前到目标阶跨一步的走法变成到下一目标阶跨两步的走法one = sum; //之前到目标阶的走法变成到下一目标阶跨一步的走法}return sum;
}

同样走40步台阶, 耗时0毫秒

递归与循环迭代的比较

递归简洁、易于理解, 但是浪费空间、效率低下(从图中看出相对耗时更久)
迭代正好反之, 不够简洁, 可读性较差, 但是效率更高, 不易造成堆栈溢出

算法! 有n步台阶,一次只能上1步或2步,共有多少种走法相关推荐

  1. 编程题-有n步台阶一次只能上1步或2步共有多少种走法

    问题: 有n步台阶,一次只能上1步或2步,请共有多少种走法,请使用编程实现. 编程题实现: 方法1-递归 //实现f(n):求n步台阶,一共有几种走法public int f(int n){if(n& ...

  2. 字节算法题--N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。

    N阶台阶,每次走一步或两步,计算共有多少种走法,打印出每种走法. 一 走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步.2步或 ...

  3. n级阶梯,人一步只能上1~2级,求一共有几种走法?

    B站上有这样一道题: 大厂算法很难!力扣经典算法解析,小白也能懂!_哔哩哔哩_bilibili数据结构和算法可以让程序员脱胎换骨,刷算法题可以帮助我们通过面试和笔试,找到梦寐以求的工作,进入一线大厂或 ...

  4. 题目3:一段楼梯共n级台阶,规定每一步只能跨一级或两级或三级。要等上第n级台阶共有几种走法?

    题目3:一段楼梯共n级台阶,规定每一步只能跨一级或两级或三级.要等上第n级台阶共有几种走法? 斐波那契数列问题:递归或动态规划均可解此类问题.跳台阶是典型应用之一. 思路:我们先从最后开始考虑,因为规 ...

  5. 【面试题】N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。

    题目重述:有N阶台阶,每次可以走一步也可以走两步,计算共有多少种走法,并将每种走法打印出来. 以下解法主要利用了二叉树和递归的解题思路. public class StepCompute {priva ...

  6. 【组合数学+动态规划】在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。...

    在如下8*6的矩阵中,请计算从A移动到B一共有__种走法.要求每次只能向上或向右移动一格,并且不能经过P. A:456  B:492  C:568  D:626  E:680  F:702 解析:  ...

  7. 超级楼梯——有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法?

    有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0<n<40),请你输出不同的走法数. 如n=2,则输出1(你只有一种走 ...

  8. 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现。

    有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现. 输入: 输入一个整数M(1<=M<=20),表示楼梯的级数. 输出: 输出不同走法 ...

  9. 【有n步台阶,一次只能上1步或2步,共有多少种走法?】

    1.递归 public static int f(int n){if (n < 1){throw new IllegalArgumentException(n + "不能小于1&quo ...

最新文章

  1. Mysql 查询主键未指定排序时的默认排序问题
  2. 20175330 数据结构-排序(选做)
  3. Oracle数据库空间管理
  4. Jexus部署.Net Core项目
  5. opencv 画矩形_图像处理之OpenCV的基础使用补充
  6. Codeforces Round #703 (Div. 2) B.Eastern Exhibition 中位数结论
  7. c++创建文件_使用Python实现文件压缩和解压
  8. linux查看mongodb的ip地址,[转载]在MongoDB的shell中显示服务器当前IP
  9. 来了!小米9发布时间确定:2月20日见 为你而战
  10. 蓝桥杯 ADV-82 算法提高 填充蛋糕
  11. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第五天(非原创)
  12. ffmpeg drawtext 背景_8款电视背景墙:电视背景墙这样装,不仅省钱还作用多!效果大不一样!...
  13. Android Ble蓝牙中如何获取RawData ,UUID,Major,Minor,Measured power at 1 meter的数据。
  14. 【BDTC 2018】PingCAP申砾:做一个真正通用的数据库产品
  15. Chrome繁简体转换插件
  16. Androidstudio setting .DEX extension only for .CLASS files
  17. [洛谷]P3374 【模板】树状数组 1 (#树状数组)
  18. linux分区出现hfs,如何在Ubuntu中将HFS分区挂载为读/写?
  19. Python实现猫捉老鼠小游戏!虽然简陋但是童真永在!
  20. [MAUI]模仿微信“按住-说话”的交互实现

热门文章

  1. Optics Bridge:Celo <-> 以太坊
  2. 项目Demo —— socket下载器
  3. 成都市计算机企业管理学校,成都2021年计算机管理院校排行榜
  4. CLISP 实现记录:5.数据和控制流
  5. iba测评题目_2017单独招生考试综合试题(卷)与答案解析.doc
  6. DQL:简单的select语句书写(含where子句)
  7. 永久解决IDEA中MAVEN项目总是将LANGUAGE LEVEL重置到5的问题
  8. java程序占用cpu100%问题查找方案
  9. 目标跟踪算法的分类(三)
  10. ezpolt和plot区别_stem与plot的区别