трех пролетов, по 5, 8 и 9 ступеней.
Поднимаясь по лестнице он может наступить на следующую ступень, перешагнуть одну ступеньку, или перешагнуть через две ступеньки.
Однако он обязательно должен наступить один раз на площадку между пролетами.
Сколькими различными способами он сможет подняться по лестнице.
Пример одного из способов: перешагнуть две ступеньки, перешагнуть одну ступеньку (оказались на первом пролете), два раза перешагнуть через две ступеньки и два раза ступить на следующую ступеньку (оказались на втором пролете), три раза перешагнуть через две ступеньки (оказались в конце лестницы)
Решение дать в виде php функции, которая бы принимала три параметра - количество ступенек в каждом из трех пролетов
Я ее представляю следующим образом:
У меня есть 1 ступенька - кол-во способов - 1
2 ступеньки - 2, 3 ступеньки - 4, 4 -5, 5 - 8, 6 -13 и тд
Я так понимаю это отсылка к Фибоначи.
потом просто суммирую три пролета.
Вот решение на php:
<?php
//возвращает n-е число Фибоначчи.
function fib($n) {
$a = 1;
$b = 1;
for ($i = 3; $i <= $n; $i++) {
$c = $a + $b;
$a = $b;
$b = $c;
}
return $b;
}
//количество способов которыми можно подняться по леснице из 3-ех пролётов
function upStairs($stairs1 = 5, $stairs2 = 8, $stairs3 = 9) {
return fib($stairs1) + fib($stairs2) + fib($stairs3);
}
echo 'Количество различных способов, которыми можно подняться по лестнице: ' . upStairs(1, 1, 1);
Мне ответили «Очень близко.
Но есть небольшая ошибка
в конфигурации 1 1 1 код вернет 3
в реальности ответ 1..»
Я не могу понять как можно подняться одним способом если нужно обязательно наступить на пролет, как сказано в условии задачи? Помогите разобраться пожалуйста
Это на собеседовании тебе дали?) Или сам для себя решаешь?
может имеется виду разных? у тебя получается везде по одно лестнице? как бы одинаковые способы
тебе нужно еще после этого искать уникальные
Обсуждают сегодня