楼梯有m层,可以迈1步或两步,有几种方法?
来源:互联网 发布:北京 考研 机构 知乎 编辑:程序博客网 时间:2024/04/26 05:25
通过递归的方式可以比较容易的得到结果:下面是程序代码
public class StepDemo {private static int sum = 2;//总的台阶数public static void main(String[] args) {step(sum,"");} private static void step(int subsum,String result){ if(subsum<=0){ System.out.println(result); return; } if(subsum==1){step(subsum-1,result+1); } if(subsum>1){//有两种可以选 int j=1; for(;j<=2;j++){step(subsum-j,result+j); } } }}
不是很复杂,但是有一个容易出现的问题:如果我们把程序写成如下形式:
public class StepDemo {private static int sum = 2;//总的台阶数public static void main(String[] args) {step(sum,"");} private static void step(int subsum,String result){ if(subsum<=0){ System.out.println(result); return; } if(subsum==1){ result = result+1; step(subsum-1,result); } if(subsum>1){//有两种可以选 int j=1; for(;j<=2;j++){ result = result+j; step(subsum-j,result); } } }}上面的程序中我们希望找到在m=2时的所有的方案。程序结果为:
11121+2=3,这样就走了3层,而m=2,这必然是不对的。这是什么原因呢:
我们看当subsum=2时,满足subsum>2,进入for循环
j=1--->第一次调用的step中的result=“1”--->step(1,"1")||||递归调用,满足subsum=1,第二次调用的step中的result=“11”|||递归调用--->输出11
j=2--->第一次调用的step中的result已经是"1"了,现在要执行result = result+j;
得到的result就是“12”了
而正确代码中没有直接改变本层递归中result的值
- 楼梯有m层,可以迈1步或两步,有几种方法?
- 递归--20层楼梯每次可以走1步2步4步,有几种走法
- (hdu step 3.1.1)超级楼梯(简单递推:从第1级到第m级有多少种走法,每次只能走一步或两步)
- 爱因斯坦 上楼梯问题 若每步跨2阶,剩1阶 两种方法
- 爬楼梯问题 一次走一步或两步,输入台阶数,输出走法次数
- java:递归:上楼梯每次只能一步或者两步,有多少走法
- n级阶梯,每次走一步和两步或三步,有多少种走法
- 一个人爬楼梯,楼梯共20层,一人一步可以走一层或两层,共多少种走法?
- 青蛙上台阶,可以一下跳1步,也可以一下跳2步,n层台阶所有跳法?
- 25级阶梯,每次走一步或两步,问最多有多少种走法
- 25级阶梯,每次走一步或两步,问最多有多少种走法
- 25级阶梯,每次走一步或两步,问最多有多少种走法
- n级阶梯,每次走一步或两步,问最多有多少种走法
- n级阶梯,每次走一步或两步,问最多有多少种走法
- n级阶梯,每次走一步或两步,问最多有多少种走法
- [算法]n阶台阶,一次走一步或两步,有多少种走法?
- n级阶梯,每次走一步或两步,问最多有多少种走法
- n级阶梯,每次走一步或两步,问最多有多少种走法
- 【热门主题:动漫进击巨人xp主题】
- socket 五种模型中 WSAWaitForMultipleEvents
- .net通过获取客户端IP地址反查出用户的计算机名
- jsp 获取系统时间并赋值给value
- 软件开发周期延期浅谈
- 楼梯有m层,可以迈1步或两步,有几种方法?
- ffmpeg中的sws_scale算法性能测试
- 一段很经典话
- 现代Web应用开发者必备的六大技能
- 【最难得的,是叫一个执着的人学会放下】
- 【HDOJ】1197 -> Specialized Four-Digit Numbers
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- android主线程访问网络失败的解决方法
- 操作系统概念理解