Всем доброго времени суток! Ищу интересные задачки на PHP, пока не занят надо мозг нагружать. Заметил, если какое-то время не пишешь код, то потом, чтобы вспомнить что-либо надо повторять. Стараюсь каждый день хоть по чуть-чуть что-то писать.
F(0) = 0, F(1) = 1, F(N) = F(n - 1) + F(n - 2) Сделай функцию, которая будет считать любой член этой последовательности. Классический пример на рекурсию, и также классический пример, когда рекурсия вредна. Так что рекомендую написать два варианта, с рекурсией и без. --- Добавлено --- Потом можешь трибонначи тоже сделать, хорошее упражнение:
Интересно, но есть готовые формулы для этой задачки, задача состоит в том, чтобы вывести свой алгоритм? PHP: function fibonacci_bine($n) { $sq5 = sqrt(5); $a = (1 + $sq5) / 2; $b = (1 - $sq5) / 2; return (pow($a, $n) - pow($b, $n)) / $sq5; } function fibonacci_recurs($n) { if ($n < 3) { return 1; } else { return fibonacci_recurs($n-1) + fibonacci_recurs($n-2); } } function fibonacci_mas($n) { echo '...,'; $result = [1, 1]; for($i = 2; $i <= $n; $i++ ) { $result[] = $result[$i-1] + $result[$i-2]; } $result = implode(", ", $result); $result .= ', ...<br><br>'; return $result; } function zic($a, $b, $c) { echo '...,'; for ($n = $a; $n < $b; $n++) { if ($c == 1) { echo(fibonacci_bine($n) . ", "); } elseif ($c == 2) { echo(fibonacci_recurs($n) . ", "); } else echo "Ошибка передачи"; } echo '...<br><br>'; } echo "По форумуле Бине:<br>"; zic(1, 22, 1); echo "Рекурсивным методом:<br>"; zic(1, 22, 2); echo "Рекурсивным методом 2:<br>"; echo fibonacci_mas(20); --- Добавлено --- Заметил, что при рекурсии не получается вычислить отрицательные числа последовательности. --- Добавлено --- Это больше для примеров, но все равно спасибо. После фибоначчи, трибоначчи легко, просто надо добавить 1 элемент. PHP: function tribonacci($n) { echo '...,'; $result = [0, 0, 1]; for($i = 2; $i <= $n; $i++ ) { $result[] = $result[$i] + $result[$i-1] + $result[$i-2]; } $result = implode(", ", $result); $result .= ', ...<br><br>'; return $result; } echo "Трибоначчи:<br>"; echo tribonacci(20);
Я тоже сейчас читал и понял, что раньше это знал и комбинаторику и последовательности. Если что-то не используешь на практике, то это забывается..
http://www.itmathrepetitor.ru/zadachi-po-php/ - вот ещё куча задач, разного уровня сложности, от простых до крутых
я поднял там 315)да,однотипные задачи бывают,но есть и довольно интересные,типа реализации шифра Цезаря или декодирование Морзе.