该题思路简直和跳台阶一模一样,只是换了个说法
尝试一
结果:通过
public class Solution {
private static int ways=0;
private static int t=0;
public int RectCover(int target) {
/*把ways,target存为静态类成员是为了便于使用*/
ways=0;
t=target;
//开始时竖着放
ReactCover(0,1);
//开始时水平放
ReactCover(0,2);
return ways;
}
/*
* sum:水平方向走了多少步
* length:表示是横着放还是竖着放(横:2,竖:1)
*/
public void ReactCover(int sum,int length){
sum+=length;
/*递归结束标识*/
if(sum==t){
ways++;
return;
}
if(sum>t){
return;
}
//竖着放
ReactCover(sum,1);
//横着放
ReactCover(sum,2);
}
}
结论
- 递归可以用来做试探