Учебные задачи PHP. Задача 4
Primary tabs
<?php
$s = 0; // сумма двух предыдущих членов последовательности
$a = 0; // предпоследний член последовательности
$b = 1; // последний член последовательности
$n = 20; //количество членов последовательности (итераций цикла)
for ($i = 0; $i < $n; $i ++)
{
$s = $a + $b; // сумма двух предыдущих членов последовательности
echo "$s <br>"; // выводим на экран сумму
$a = $b; // присваиваем значение последнего члена послед-ти предпоследнему
$b = $s; // присваиваем значение суммы послед-ти последнему члену
}
?>
- Log in to post comments
- 7758 reads
vedro-compota
Fri, 04/12/2019 - 08:59
Permalink
все решения старайтесь сразу
все решения старайтесь сразу оформлять в виде функции. В данном случае понятно, что это самое число надо сначала из функции вернуть.
_____________
матфак вгу и остальная классика =)
Laven
Fri, 04/12/2019 - 10:47
Permalink
Решение в виде функции
Написал код решения задачи в виде функции. Код выдает ошибку:
Я что-то пока не могу сообразить, что не так?
П.С. Функцию print_r использовал в качестве отладки. Потом переделаю.
<?php function fibo ($n) { //$s = 0; // сумма двух предыдущих членов последовательности $a = 0; // предпоследний член последовательности $b = 1; // последний член последовательности //$n = 20; //количество членов последовательности (итераций цикла) $s= array(); for ($i = 0; $i < $n; $i ++) { $s[] = $a + $b; // сумма двух предыдущих членов последовательности //echo "$s <br>"; // выводим на экран сумму $a = $b; // присваиваем значение последнего члена послед-ти предпоследнему $b = $s; // присваиваем значение суммы послед-ти последнему члену } return $s; } print_r (fibo (5)); ?>melisa
Fri, 04/12/2019 - 14:04
Permalink
сначала оформление
function fibo ($n) { //$s = 0; // сумма двух предыдущих членов последовательностиздесь не хватает отступов
} return $s;Здесь лишние отступы
Перепешите задачу с учётом исправлений.
vedro-compota
Fri, 04/12/2019 - 14:09
Permalink
массив с числом не сложить
$s[] = $a + $b; // сумма двух предыдущих членов последовательности //echo "$s <br>"; // выводим на экран сумму $a = $b; // присваиваем значение последнего члена послед-ти предпоследнему $b = $s;вы во второй интерации пытаетесь сложить число с массивом так как в конце первой выполнили:
для кода, который вы прислали ошибка не эта.
тут вы передаете переменную нормально.
_____________
матфак вгу и остальная классика =)
Laven
Sun, 04/14/2019 - 15:17
Permalink
Исправил код задачи
<?php function fibo($count) { $a = 0; // предпоследний член последовательности $b = 1; // последний член последовательности for ($i = 0; $i < $count; $i ++) { $sum = $a + $b; // сумма двух предыдущих членов последовательности $sum_arr[] = $sum; $a = $b; // присваиваем значение последнего члена послед-ти предпоследнему $b = $sum; // присваиваем значение суммы послед-ти последнему члену } return $sum_arr; } $fiboCount = fibo(11); foreach ($fiboCount as $value) { echo $value. " "; } ?>melisa
Tue, 04/16/2019 - 15:31
Permalink
Логически код расчёта
Логически код расчёта следующего значения верный. НО есть пара моментов другого рода:
Просили вывести n-ный член последовательности, а Вы выводите все. Но ладно было бы ещё, если бы все, из которых последний - искомый. Но последний элемент, который выводит Ваш алгоритм - 13й по факту. Потому что первые два элемента Вы не посчитали нужным посчитать). Понимаете? Это проблема не логики присвоения значений последовательности, а именно выбора элемента. На это важно обращать внимание. А-то просят кур считать, а Вы фуру разгрузили)
foreach ($fiboCount as $value) { echo $value. " "; }А тут наоборот не хватает отступов:
{ $a = 0; // предпоследний член последовательности $b = 1; // последний член последовательностиИ ещё: лучше делать пустую строку перед for, foreach, if. так легче будет читать код. Например, так:
$b = 1; // последний член последовательности for ($i = 0; $i < $count; $i ++) { // ... } if () { // ... } return $sum_arr;Laven
Wed, 04/17/2019 - 20:33
Permalink
Исправил код задачи
<?php function fibo($count) { $a = -1; // течнический параметр, для запуска кода $b = 1; // 2-ый член последовательности for ($i = 0; $i < $count; $i ++) { $sum = $a + $b; // сумма двух предыдущих членов последовательности $a = $b; // присваиваем значение последнего члена послед-ти предпоследнему $b = $sum; } return $sum; } $n = rand(1,20); $fiboCount = fibo($n); echo "$n - ое число последовательности: $fiboCount"; ?>melisa
Thu, 04/18/2019 - 16:11
Permalink
принято
интересное решение) классно)
принято