Столкнулся с такой задачей:
Каждый новый элемент последовательности Фибоначчи получается сложением предыдущих двух. Начиная с 1 и 2, получаем первые 10 элементов: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, … Найдите сумму всех четных элементов последовательности Фибоначчи, порядковый номер которых меньше A и верните из функции сумму всех ее цифр.
Пример: A = 10
Ряд Фибоначчи: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Четные элементы: 2, 8, 34
Их сумма: 44, а сумма всех ее чисел - 8.
Показалось легко и начал решать таким способом:
<?php
function solution($X) {
$arr = array(1, 2);
$sum = 0;
$len = 0;
for ($i = 2; $i <= $X; $i++) {
array_push($arr, $arr[$i - 1] + $arr[$i - 2]);
if ((($arr[$i - 1]) % 2) == 0 && ($i - 1) < $X) {
$sum += $arr[$i - 1];
}
}
while ($sum != 0 && $sum > 0) {
$len += $sum % 10;
$sum = intval($sum / 10);
}
return $len;
}
print solution(10);
Если при проверке указать 10(solution(10)
), то ответ выдает верный, если указать число, которое больше 90, то ответ всегда равен 0.
Вопрос собственно такой. Где я ошибся?
Свежие комментарии