N阶台阶,每次只能走一个台阶或者两个台阶,求一共有多少种走法?
2015-09-11 21:26
423 查看
思路:
走上第20个台阶有2种情况,一种是站在第19个台阶上 在走一步就到达20
还有一种就是站在第18个台阶上再走2步就到达20台阶
……
从此,n阶台阶的走法是n-1个台阶的走法加上n-2个台阶的走法
package com.zyh.test;
public class Test {
static int num=0;
/**
* @param 夜晚聊天小程序
*/
public static void main(String[] args) {
//System.out.println(Taijie(20));
System.out.println(Taijie2(0));
}
/**
* 递归求解台阶问题 第一种做法
* 一共20个台阶,每次只能走一步或者两步,问一共有多少种走法
* @param n为台阶数
* @return 一共多少种走法
*/
public static int Taijie(int n){
if(n==1)
num=1;
if(n==2)
num=2;
if(n>2)
num=Taijie(n-1)+Taijie(n-2);
return num;
}
/**
* 第二种做法
* 全排列做法,循环的测试每种做法
*/
public static int Taijie2(int n){
if(n==20)
return 1;
if(n>20)
return 0;
return Taijie2(n+1)+Taijie2(n+2);
}
}
如果不限制走的种类,要求计算需要走多少1步的和2步的,就转换成x+2y=20的解
走上第20个台阶有2种情况,一种是站在第19个台阶上 在走一步就到达20
还有一种就是站在第18个台阶上再走2步就到达20台阶
……
从此,n阶台阶的走法是n-1个台阶的走法加上n-2个台阶的走法
package com.zyh.test;
public class Test {
static int num=0;
/**
* @param 夜晚聊天小程序
*/
public static void main(String[] args) {
//System.out.println(Taijie(20));
System.out.println(Taijie2(0));
}
/**
* 递归求解台阶问题 第一种做法
* 一共20个台阶,每次只能走一步或者两步,问一共有多少种走法
* @param n为台阶数
* @return 一共多少种走法
*/
public static int Taijie(int n){
if(n==1)
num=1;
if(n==2)
num=2;
if(n>2)
num=Taijie(n-1)+Taijie(n-2);
return num;
}
/**
* 第二种做法
* 全排列做法,循环的测试每种做法
*/
public static int Taijie2(int n){
if(n==20)
return 1;
if(n>20)
return 0;
return Taijie2(n+1)+Taijie2(n+2);
}
}
如果不限制走的种类,要求计算需要走多少1步的和2步的,就转换成x+2y=20的解
相关文章推荐
- 正则表达式
- git
- HYSBZ 2049 Cave 洞穴勘测
- 使用Windows的分析等待链(analyze wait chain)来诊断没用响应的应用
- BeanUtils: 威力和代价(转载)
- LeetCode(63)Unique Paths II
- Mac OS 远程访问Linux服务器
- windows内核编程基础篇之使用同步事件
- postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
- Python测试工具Pylot使用
- LeetCode(63)Unique Paths II
- Vim编辑器的获取和使用
- SQL
- 编写一段程序,从标准输入读取string对象的序列直到连续出现两个相同的单词或者所有单词都读完为止
- uva 11747 - Heavy Cycle Edges(生成树)
- 回望英语-6
- [noip2013][codevs3290]华容道 bfs+spfa
- LeetCode Maximum Gap
- JOS 系统中第一个用户进程的建立和运行
- $(window).load(function(){}) 和 $(document).ready(function(){})的区别