题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:
网上出现比较多的方法都是不完全归纳法,找出规律有总共有 2的n-1次方 跳法。参见:
这里提出一种不一样的思路:
如上图,每一种跳法都是从1到n的一条路径,我们监测的是路径经过的阶梯个数,由于最后一个阶梯n是必跳的,所有自由选择的阶梯数就是前面的n-1个,阶梯个数设为x(0<=x<=n-1),那木,经过x个阶梯的跳法就是:从n-1个阶梯中选择x个,就是排列组合的问题:
图中下面的是数学上的一个公式!
这种推导比网上那种不完全归纳法要直观一点!
代码实现都是一样的,基于规律以后,就很容易实现了,如下所示:
Java代码实现:
public class Solution {
public int JumpFloorII(int target) {
int count = 1;
for(int i=1; i<target; i++){
count *= 2;
}
return count;
}
}
End