Optimalaus algoritmo pasirinkimas PHP
Kartais kodo problema gali būti susijusi su tuo, kad uždaviniui išspręsti pasirinktas ne pats optimaliausias būdas.
Tarkime, pavyzdžiui, kad prieš mus yra uždavinys
rasti sveikųjų skaičių sumą nuo 1 iki 1000000.
Išspręskime pateiktą uždavinį:
<?php
$sum = 0;
for ($i = 1; $i <= 1000000; $i++) {
$sum += $i;
}
echo $i;
?>
O kas negerai? Esmė ta, kad šiam uždaviniui išspręsti egzistuoja matematinis sprendimas.
Šis sprendimas praktiškai nereikalauja resursų! Užprogramuokime jį:
<?php
$n = 1000000;
$sum = $n * ($n + 1) / 2;
echo $sum;
?>
Moralas: prieš sprendžiant resursų reikalaujantį uždavinį būtinai patikrinkite, ar neegzistuoja jai išspręsti jau paruoštos matematinės formulės ar paruošto matematinio požiūrio.
Raskite skaičių, kurie be liekanos dalijasi
iš 5, iš intervalo nuo 1 iki
1000, kiekį.
Raskite skaitmenų, kurių prireiks,
kad užrašyti visus skaičius nuo 1 iki 1000000, kiekį.
Raskite visus pirminius skaičius intervale nuo
1 iki 10000. Uždavinys su žvaigždute,
galima nespręsti.