算法! 有n步台阶,一次只能上1步或2步,共有多少种走法
有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步,共有多少种走法相关推荐
- 编程题-有n步台阶一次只能上1步或2步共有多少种走法
问题: 有n步台阶,一次只能上1步或2步,请共有多少种走法,请使用编程实现. 编程题实现: 方法1-递归 //实现f(n):求n步台阶,一共有几种走法public int f(int n){if(n& ...
- 字节算法题--N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
N阶台阶,每次走一步或两步,计算共有多少种走法,打印出每种走法. 一 走台阶算法(本质上是斐波那契数列)在面试中常会遇到,描述就如题目那样:总共100级台阶(任意级都行),小明每次可选择走1步.2步或 ...
- n级阶梯,人一步只能上1~2级,求一共有几种走法?
B站上有这样一道题: 大厂算法很难!力扣经典算法解析,小白也能懂!_哔哩哔哩_bilibili数据结构和算法可以让程序员脱胎换骨,刷算法题可以帮助我们通过面试和笔试,找到梦寐以求的工作,进入一线大厂或 ...
- 题目3:一段楼梯共n级台阶,规定每一步只能跨一级或两级或三级。要等上第n级台阶共有几种走法?
题目3:一段楼梯共n级台阶,规定每一步只能跨一级或两级或三级.要等上第n级台阶共有几种走法? 斐波那契数列问题:递归或动态规划均可解此类问题.跳台阶是典型应用之一. 思路:我们先从最后开始考虑,因为规 ...
- 【面试题】N阶台阶,每次走一步或两步,计算共有多少种走法,并将每种走法打印出来。
题目重述:有N阶台阶,每次可以走一步也可以走两步,计算共有多少种走法,并将每种走法打印出来. 以下解法主要利用了二叉树和递归的解题思路. public class StepCompute {priva ...
- 【组合数学+动态规划】在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。...
在如下8*6的矩阵中,请计算从A移动到B一共有__种走法.要求每次只能向上或向右移动一格,并且不能经过P. A:456 B:492 C:568 D:626 E:680 F:702 解析: ...
- 超级楼梯——有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法?
有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0<n<40),请你输出不同的走法数. 如n=2,则输出1(你只有一种走 ...
- 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现。
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现. 输入: 输入一个整数M(1<=M<=20),表示楼梯的级数. 输出: 输出不同走法 ...
- 【有n步台阶,一次只能上1步或2步,共有多少种走法?】
1.递归 public static int f(int n){if (n < 1){throw new IllegalArgumentException(n + "不能小于1&quo ...
最新文章
- Mysql 查询主键未指定排序时的默认排序问题
- 20175330 数据结构-排序(选做)
- Oracle数据库空间管理
- Jexus部署.Net Core项目
- opencv 画矩形_图像处理之OpenCV的基础使用补充
- Codeforces Round #703 (Div. 2) B.Eastern Exhibition 中位数结论
- c++创建文件_使用Python实现文件压缩和解压
- linux查看mongodb的ip地址,[转载]在MongoDB的shell中显示服务器当前IP
- 来了!小米9发布时间确定:2月20日见 为你而战
- 蓝桥杯 ADV-82 算法提高 填充蛋糕
- ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第五天(非原创)
- ffmpeg drawtext 背景_8款电视背景墙:电视背景墙这样装,不仅省钱还作用多!效果大不一样!...
- Android Ble蓝牙中如何获取RawData ,UUID,Major,Minor,Measured power at 1 meter的数据。
- 【BDTC 2018】PingCAP申砾:做一个真正通用的数据库产品
- Chrome繁简体转换插件
- Androidstudio setting .DEX extension only for .CLASS files
- [洛谷]P3374 【模板】树状数组 1 (#树状数组)
- linux分区出现hfs,如何在Ubuntu中将HFS分区挂载为读/写?
- Python实现猫捉老鼠小游戏!虽然简陋但是童真永在!
- [MAUI]模仿微信“按住-说话”的交互实现
热门文章
- Optics Bridge:Celo <-> 以太坊
- 项目Demo —— socket下载器
- 成都市计算机企业管理学校,成都2021年计算机管理院校排行榜
- CLISP 实现记录:5.数据和控制流
- iba测评题目_2017单独招生考试综合试题(卷)与答案解析.doc
- DQL:简单的select语句书写(含where子句)
- 永久解决IDEA中MAVEN项目总是将LANGUAGE LEVEL重置到5的问题
- java程序占用cpu100%问题查找方案
- 目标跟踪算法的分类(三)
- ezpolt和plot区别_stem与plot的区别