题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析
最后一节台阶是必须上的,之前的n-1个台阶每一个都有两种情况,上或者不上,因此从第一个开始,2*2……2,共有n-1个2相乘。
Java中实现2的n-1次方,要用到库函数math.pow(2,n)。加入不允许用库函数,就要用位移运算,而位移运算的效率还要更高。
“«” 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。 位移运算首先将数字用二进制标示,在进行移位。例如16的二进制表示为10000,左移一位为100000,就是2的5次方。
代码
import javax.swing.text.html.parser.TagElement;
public class offer9 {
public static void main(String[] args) {
offer9 offer9 = new offer9();
System.out.println(offer9.JumpFloorII(3));
}
public int JumpFloorII(int target) {
if (target <= 0) {
return -1;
}
return 1<< (target - 1);
}
}