期末复习递归时想到39级台阶这道题。
package recurion;
/**
* @author hpc
* @Date:2018-6-27下午7:18:32
* 功能:递归实现39级台阶问题,由于左脚开始右脚结束所以总步数为偶数。
*/
public class TaiJie_39 {
static int count = 0;//设置成员变量对走的步数计数,初始值为0.
public static void main(String[] args) {
f(39,0);
System.out.println(count);
}
static void f(int stairs,int steps){
if(stairs<0)return;
if(stairs==0){//如果还剩的台阶数是0,则表示走完了,则对总步数是否是偶数进行判断
if(steps%2==0){//如果是偶数,count加一
count++;
}
return;
}
f(stairs-1,steps+1);
f(stairs-2,steps+1);//剩下的stairs如果不是0的话有两种走法
}
}
package recurion;
/**
* @author hpc
* @Date:2018-6-27下午7:18:32
* 功能:递归实现39级台阶问题,由于左脚开始右脚结束所以总步数为偶数。
*/
public class TaiJie_39 {
static int count = 0;//设置成员变量对走的步数计数,初始值为0.
public static void main(String[] args) {
f(39,0);
System.out.println(count);
}
static int f(int stairs,int steps){
if(stairs==1){
if(steps%2!=0){
return count++;
}
else
return 0;
};
if(stairs==0){
if(steps%2==0){
return count++;
}
else
return 0;
}
return f(stairs-1,steps+1)+f(stairs-2,steps+1);
}
}
因为左脚先上最后以右脚结束,所以必定是偶数步,这是最终的判断条件。以四个台阶为例,根据递归查找最终有两种可能。