02
Сен
2016

Четные числа Фибоначчи

Столкнулся с такой задачей:

Каждый новый элемент последовательности Фибоначчи получается сложением предыдущих двух. Начиная с 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.

Вопрос собственно такой. Где я ошибся?

Источник: https://ru.stackoverflow.com/questions/562242/%D0%A7%D0%B5%D1%82%D0%BD%D1%8B%D0%B5-%D1%87%D0%B8%D1%81%D0%BB%D0%B0-%D0%A4%D0%B8%D0%B1%D0%BE%D0%BD%D0%B0%D1%87%D1%87%D0%B8

Share

Тебе может это понравится...