假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例:
我在网上看到很多类似的题,但是发现大多数只是算出排列组合的个数没有具体输出每种排列组合。所以用java简单实现了一下,新手勿喷。
代码如下:
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("请输入一个正整数:");
List<Integer> list =new ArrayList<Integer>();
int a=input.nextInt();
int i=0;
while(i<=a){
int a2=0;
int ac=(a-i)%2;
if(ac==0){
a2=(a-i)/2;
arrange(i,a2,"");
}else{
a2=(a-i)/2;
i++;
arrange(i,a2,"");
}
i++;
}
}
public static void arrange(int a1, int a2, String s){
if(a1==0&&a2==0){
if(!s.equals("")){
System.out.println(s.substring(0,s.length()-1));
}
}else {
if(a1>0){
arrange(a1-1,a2,s+"1阶+");
}
if(a2>0){
arrange(a1,a2-1,s+"2阶+");
}
}
}
先在main方法里算出走一阶与走二阶的个数组合,再将其传到arrange方法中利用递归将所有排列组合用字符串拼接好并输出。