Description
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
Solutions
青蛙要想跳到target级台阶,她可以从第0个台阶直接(一次)跳到target级,或者从第1级台阶直接跳到target级,...或者直接从第target-1级台阶直接跳到target级。
因此跳到target级台阶跳法JumpFloorII(target) = JumpFloorII(1) + JumpFloorII(2) + ... + JumpFloorII(target-1)
通过分析,其实对应的结果序列就是:1,2,4,8... 即为指数序列
PS:之所以只考虑”直接“,不考虑间接,是因为间接会导致重复,例如青蛙可以先跳到第m级台阶然后直接跳到target级(0->m->target),如果是间接方式:0->m->n->target,那么就会和0->n->target的方式重复。
Code
public int JumpFloorII(int target) { if(target <= 0){ // 非法输入 return 0; } else if(target == 1){ // 递归终止条件 return 1; } else { // 递归操作 // return 2 * JumpFloorII(target-1); // 乘方操作 return (int)Math.pow(2, target - 1); } }