Проблема с поиском чисел Фибоначчи

Необходимо получить число Фибоначчи большее 100. Написал такую функцию:

public function main(int $n): string
{
    if ($n < 0) {
        throw new \InvalidArgumentException();
    }
    $array = [0, 1];
    for ($i = 2; $i <= $n; $i++) {
        $array[$i] = $array[$i - 1] + $array[$i - 2];
    }

    return $array[$n];
}

Но в юнит тесте 12 = 139583862445, 99 = 121253296785055132210628998331901307849293052175954107980980734350044979474331514800545696516184354. Мб у кого есть идеи по реализации?


Ответы (1 шт):

Автор решения: SwaD

Скорее все всего ошибка в тесте. Я взял ваш код, немного добавил условий, и выполнил ряд тестов(можете сами посмотреть) - все работает корректно

function main(int $n): int
{
    if ($n < 0) {
        //throw new InvalidArgumentException();
        return -500;
    }
    if ($n === 1) return 0;
    if ($n === 2) return 1;
    $array = [0, 1];
    for ($i = 2; $i <= $n; $i++) {
        $array[$i] = $array[$i - 1] + $array[$i - 2];   //echo $array[$i], "\n";
    }
    return $array[$n];
}

echo main(12), "\n";
echo main(11), "\n";
echo main(10), "\n";
echo main(5), "\n";
echo main(2), "\n";
echo main(1), "\n";
echo main(0), "\n";
echo main(-1), "\n";
?>
→ Ссылка