Написал простенькую функцию, которая считает гипотенузу треугольника из данных post формы.
Но есть один нюанс, если ввести большие числа в ширину
($weight) и высоту
($height),
то цикл начинает медлить, то есть зависать.
Как я понимаю цикл
for долго работает с большими числами(24343434343 и т.д.).
Есть конечно выход, это убрать "Итерационную формулу Герона"
и сделать подсчет корня при помощи встроенной функции
sqrt()
Но возможно ли как-то оптимизировать цикл и ускорить его?
$weight = null;
$height = null;
function calc_hypotenuse($a,$b){
$result = 1;
if(is_numeric($a) && is_numeric($b)){
$token = ($a*$a) + ($b*$b);
for($i = 1; $i <= $result; $i++){
$result = 1/2 * ($i + $token / $i);
}
}
else{
return "<br> Ошибка: Чтобы найти гипотенузу, нужно все поля заполнить цифрами";
}
return "<br> Гипотенуза равна = ". round($result, 1);
}
if(isset($_POST["weight"]) && isset($_POST["height"]) ){
$weight = $_POST["weight"];
$height = $_POST["height"];
echo calc_hypotenuse($weight,$height);
}
<form method="POST">
<p>Ширина: <input type="text" name="weight" /></p>
<p class ="block">Высота: <input type="text" name="height" /></p>
<br>
<input type="submit" value="Найти гипотенузу">
</form>
body{
font-size: 30px;
}
.block{
margin-top:10px;
margin-left:12px;
}