题解 | #跳台阶扩展问题#
跳台阶扩展问题
http://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387
反过来,比如青蛙站在第n阶台阶,那么第一次它的跳法有:
(n-1)、(n-2)、(n-3)......(n-n)这么多种,
如果它第一次跳法为:(n-1),那么接下来跳法有:(n-1)-1、(n-1)-2、(n-1)-3......(n-1)-n这么多种;
如果它第一次跳法为:(n-2),那么接下来跳法有:(n-2)-1、(n-2)-2、(n-2)-3......(n-2)-n这么多种;
.....略
那么第一次跳法次数可以用一个for()循环表示,共 for(let i = 1;i<number;i++) 共i种;
如果它第一次跳法为:(n-1),那么接下来次数有共 for(let i = 1;i<number-1;i++) 共i种;
如果它第一次跳法为:(n-2),那么接下来次数有共 for(let i = 1;i<number-2;i++) 共i种;
....
那么可以递归表示:
function jumpFloorII(number) { // 总共次数 let sum = 1; for(let i = 1;i<number;i++){ sum += jumpFloorII(i); } return sum; }