package com.demo2;
import java.util.Scanner;
/*
* 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
*
*
* 分析:
* 起始在第一层,所以f(1) = 0;
* 第二层只能1 所以f(2) = 1;
* 第三层 1、1 或 直接2 所以f(3) = 2;
* 第四层 1、1、1 或 1、2 或 2、1 所以f(4) = 3;
* 第五层 1、1、1、1 或 1、1、2 或 1、2、1 或 2、1、1 或 2、2 所以f(5) = 5;
*
* 由于一次只能踏上一级或两级台阶,所以要到达第M级台阶,只有两种方法可以到达,
* 要么从M-1级踏一级,要么从M-2级踏二级。
* 换句话而言,我不管你如何从第一级走到第M-1、M-2级有多少种走法,分别记为f(M-1)种、f(M-2)种
* 则 f(M)共有 f(M-1) + f(M-2)种方法
*/
public class HDU_oj2041 {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
int N = sn.nextInt();
for(int i = 0;i < N ;i++) {
int M = sn.nextInt();
System.out.println(f(M));
}
sn.close();
}
public static int f(int step) {
if(step == 1)
return 0;
else if(step == 2)
return 1;
else if(step == 3)
return 2;
else
return f(step-1) + f(step -2);
}
}