变态跳台阶

 

Posted by     DH on August 8, 2017

题目

一只青蛙一次可以跳上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);
	 }
}