推导发现规律,应该是最简单代码了
变态跳台阶
http://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387
这个题目是跳台阶的进阶版,其实跟大家分析一下,这道题其实比上一道题简单。在这道题目中,青蛙可以随意一次性跳n级台阶,也就是说如果青蛙想我先枚举一下前几级台阶的跳法数量:
第一级台阶:1=1(直接从平面跳过来)
第二级台阶:1+1=2(从平面跳过来或从第一级跳过来)
第三级台阶:1+2+1=4(从平面跳过来或从第一级或从第二级跳过来)
第四级台阶:1+2+4+1=8
第五级台阶:1+2+4+8+1=16
第六级台阶:1+2+4+8+16+1=32
第七级台阶:1+2+4+8+16+32+1=64
大家观察规律可以看出来下一级台阶的方法数量是前一级台阶的两倍,正好是2的次方:
所以我们就可以很简单的写出算法:
function jumpFloorII(number) { return Math.pow(2, number-1); }