Проблема с поиском чисел Фибоначчи
Необходимо получить число Фибоначчи большее 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";
?>