题解 | #跳台阶扩展问题#

跳台阶扩展问题

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

如果一次可以跳任意阶,那么要想跳到第n阶,可以从前面任意一阶跳过去,即f(n)=f(n-1)+f(n-2)+……+f(2)+f(1)。
同理,f(n-1)=f(n-2)+f(n-3)+……+f(2)+f(1),  那么f(n) = 2 * f(n-1).
依此类推,f(n-1)=2 * f(n-2),     ……  f(2) = 2 * f(1), 而f(1) = 1;
故,f(n)=2 ^ (n-1);
int jumpFloorII(int number ) {
    if(number < 0)
        return -1;
    else if(number == 0 || number == 1)
        return 1;
    else
     // return 2 * jumpFloorII((number - 1)); //这是用递归的方法表示,比较慢
        return 1<<(number-1);  //用移位的方法表示2的幂就快一些
}


全部评论

相关推荐

牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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