先定义一个组合类
public class Combination {
//定义降序阶乘,返回积
public static int factorial(int start){
int ji=1;
for(;start>=1;start--){
ji*=start;
}
return ji;
}
//定义降序number个数阶乘,返回积
public static int factorial_limit(int start,int number){
int ji=1;
while(number>=1){
ji*=start;
number--;
start--;
}
return ji;
}
//定义组合方法,参数total是指总共迈的步数,select为一次迈一步的次数(也可表示一次迈两部的步数)
public static int OpCombination(int total,int select){
int tmp1=factorial_limit(total, select);
int tmp2=factorial(select);
return tmp1/tmp2;
}
}
再用主方法调用它
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义一个变量,记录走法的次数
int times=0;
//定义一个循环,局部变量i表示一种走法中,一步2阶出现的次数
for(int i=0;i<=20;i++){
int tmp=0;
//tmp表示一步1阶出现的次数
tmp=40-2*i;
//tmp表示总共走了多少步
tmp+=i;
//进行组合,统计次数
times +=Combination.OpCombination(tmp, i);
}
System.out.println(times);
}