Практика алгоритмизации 3
Primary tabs
Задача №10 из этого списка
<?php
$X = 0.4;
$N = 15;
function functionLn($first, $second){
$result = $first;
for($i=2; $i<=$second; $i++){
$result += singleIterValue($first, $i);
}
return $result;
}
function singleIterValue($first, $second){
$sign = $minus = -1;
$B = $first;
for ($i=2; $i<=$second; $i++){
if($i<$second){
$sign *= $minus;
}
$B *= $first;
}
$result = $sign * $B / $second;
return $result;
}
echo functionLn($X, $N);
?>
- Log in to post comments
- 3445 reads
vedro-compota
Wed, 02/13/2019 - 16:18
Permalink
ко всем функциям просьба
ко всем функциям просьба писать phpdoc (это облегчит проверку)
_____________
матфак вгу и остальная классика =)
melisa
Wed, 02/13/2019 - 17:37
Permalink
"Постоянство памяти"
для начала давайте попробуем навести порядок в обозначениях, иначе разберётся в этом только
Сальвадор Дали :)
Приведите к единому регистру все переменные
function functionLn($first, $second){Избегайте бессмысленных названий, типа первый, второй, результат, значение. Это
абстрактные слова, и в таком случае уж лучше назвать переменные $a и $b (тогда придётся
добавить комментарии к смыслообразующим строкам кода). Если возможно, нужно дать
переменной имя, проливающее свет на то, ЧТО лежит в ней. Например, $exponent.
Соответственно название функции должно отвечать на вопрос ЧТО ДЕЛАЕТ.
Не называйте переменные с помощью транслитерации. Уж лучше пусть это будет
$numberSignToAskItRepeatedly. Хотя в данном случае, если я правильно проникла
в логику, можно вообще не создавать лишнюю переменную:
if($i<$second){ $sign *= (-1); }Если алгоритм сложный, состоит из нескольких частей, "озаглавьте" их:
// Умножаем наше значение на (-1) на 1 раз меньше, чем число // само на себя // Этим мы добьёмся того, что все значения, возводимые в // нечётную степень, будут отрицательными. if($i<$second){ $sign *= (-1); }Поясните, я правильно поняла смысл данного условия?