- 有一段楼梯台阶有11级台阶,以友友的脚力一步最多只能跨3级,请问友友登上这段楼梯有多少种不同的走法?
let f1 = 1, f2 = 2, f3 = 4, result = 0; for (let i = 4; i <= 11; i++) { result = f1 + f2 + f3; f1 = f2; f2 = f3; f3 = result; } console.log(result);
本题建议采用递归求解,当台阶数为1,有1种方法上台阶,当台阶数为2,有2种方法,当台阶数为3时,有4种方法上台阶,当台阶数比3大时,因为我们一次性可以跳一阶两阶或者三阶,所以方法数应该是跳一阶之后所有可能+跳两阶之后所有可能+跳三阶之后所有可能,既jump(n) = jump(n-1)+jump(n-2)+jump(n-3)。
本方法采用java求解。
public int jump(int n){
if(n == 1 || n == 2) return n;
if(n == 3) return 4;
return jump(n-1)+jump(n-2)+jump(n-3);
}
追本溯源,上述问题的本质就是斐波那契数问题。