Чтобы эффективно определить количество способов подъема по лестнице в JavaScript, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: динамическое программирование (мемоизация)
function countWays(n, memo = {}) {
if (n === 0 || n === 1) {
return 1;
}
if (memo[n]) {
return memo[n];
}
memo[n] = countWays(n - 1, memo) + countWays(n - 2, memo);
return memo[n];
}
const numWays = countWays(5);
console.log(numWays); // Output: 8
Метод 2: итеративный подход (снизу вверх)
function countWays(n) {
if (n === 0 || n === 1) {
return 1;
}
let prev1 = 1;
let prev2 = 1;
let current;
for (let i = 2; i <= n; i++) {
current = prev1 + prev2;
prev2 = prev1;
prev1 = current;
}
return current;
}
const numWays = countWays(5);
console.log(numWays); // Output: 8
Метод 3: математическая формула (Фибоначчи)
function countWays(n) {
const sqrt5 = Math.sqrt(5);
const fibN = Math.pow((1 + sqrt5) / 2, n + 1) - Math.pow((1 - sqrt5) / 2, n + 1);
return Math.round(fibN / sqrt5);
}
const numWays = countWays(5);
console.log(numWays); // Output: 8