递归算法——超级楼梯

 1 import java.util.Scanner;
 2 
 3 /**
 4  * Created by Administrator on 14-5-13.
 5  * 超级楼梯
 6  Problem Description
 7  有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
 8 
 9  Input
10  输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数
11 
12  Output
13  对于每个测试实例,请输出不同走法的数量
14 
15  Sample Input
16  2
17  2
18  3
19 
20  Sample Output
21  1
22  2
23  */
24 public class SuperStairs {
25     public static void main(String[] args){
26         String tempStr="";
27         int tempInt=0;
28         int[] tempArray={0};
29         Scanner scanner=new Scanner(System.in);
30         tempStr=scanner.nextLine();
31         try{
32             tempInt=Integer.parseInt(tempStr);
33             tempArray=new int[tempInt];
34         }catch (NumberFormatException e){
35             System.out.println("输入有误");
36         }
37         for(int i=0;i<tempInt;i++) {
38             String s = scanner.nextLine();
39             try {
40                 int temp=Integer.parseInt(s);
41                 tempArray[i]=temp;
42              }catch (NumberFormatException e){
43                 System.out.println("输入有误");
44             }
45         }
46         for(int i=0;i<tempInt;i++){
47             System.out.println(countStatirs(tempArray[i]));
48         }
49     }
50     public static int countStatirs(int temp){
51         if(temp==0)
52             return 0;
53         else if(temp==1)
54             return 1;
55         else if(temp==2)
56             return 1;
57         else
58             return countStatirs(temp-1)+countStatirs(temp-2);
59     }
60 }

 

posted @ 2014-07-14 09:57  冥草有心  阅读(571)  评论(0编辑  收藏  举报