Как найти исходное число? X + 30% от Y = Y или X = Y - 30% от Y Найти Y, где X = целое число. function search_statr_value($price, $sale, $max_price = false) { if( $max_price === false ) { $max_price = $price * 100; } $resultPrice = round(($max_price/100)*$sale); // Нашли ! if($price == $resultPrice) { return $max_price; } if($resultPrice > $price) { return search_statr_value($price, $sale, $max_price/2, $max_price); } if($resultPrice < $price) { return search_statr_value($price, $sale, round($max_price+($max_price/2))); } } echo search_statr_value(1499, 30); Получился такой не эффективный код на бинарном поиске(типо того). Как бы улучшить быстродействие или использовать другой подход для достижения цели ? И да, да, да ) я ставлю цену и скидку, желая получить "старую цену".
Для улучшения эффективности можно использовать более оптимизированный метод. Один из способов - использовать простую математическую формулу для нахождения исходного числа:
X = Y - 0.3Y X = 0.7Y Y = X / 0.7
Таким образом, для нахождения исходного числа Y можно просто разделить значение X на 0.7.
Для улучшения эффективности можно использовать более оптимизированный метод. Один из способов - использовать простую математическую формулу для нахождения исходного числа:
X = Y - 0.3Y
X = 0.7Y
Y = X / 0.7
Таким образом, для нахождения исходного числа Y можно просто разделить значение X на 0.7.
Пример улучшенного кода:
function calculate_original_value($price, $sale) {return $price / (1 - $sale/100);
}
$price = 1499;
$sale = 30;
$original_value = calculate_original_value($price, $sale);
echo $original_value;
Этот код будет более эффективным и простым для нахождения исходного числа.