利用高中捆绑法排列组合来进行递归

变态跳台阶

http://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387

设n级台阶有f(n)种策略,假如先跳一步,则后面的n-1步有f(n-1)种
如果先跳两步,则后面的n-2步有f(n-2)种,以此类推一直到先走了n步,后面有0种即f(0)=0.
相加一共有f(n)=f(n-1)+f(n-2)+...f(0)
有f(n-1)=f(n-2)+...f(0),相减得f(n)=2f(n-1).
其实和高中的捆绑法排列组合有点相似,先捆绑一步,那么后面的组合数有f(n-1)种,捆绑2步,则后面的组合数有f(n-2)种。。。相加起来就是所有情况种数。

public class Solution {
public int JumpFloorII(int target) {
//结束条件,当后面需要考虑的步数就剩一步的时候此时停止
if(target==1){
return 1;
}
//递归体,要考虑f(n)需要先解决f(n-1)
else{
return 2*JumpFloorII(target-1);
}
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务