Эффективные методы расчета количества способов подняться по лестнице в JavaScript

Чтобы эффективно определить количество способов подъема по лестнице в 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