递归算法——超级楼梯
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 }