Επιλογή του βέλτιστου αλγορίθμου σε PHP
Μερικές φορές το πρόβλημα του κώδικα μπορεί να σχετίζεται με το γεγονός, ότι έχει επιλεγεί μια όχι και τόσο βέλτιστη λύση του προβλήματος.
Ας υποθέσουμε, για παράδειγμα, ότι έχουμε το πρόβλημα
να βρούμε το άθροισμα των ακεραίων αριθμών από το 1 έως το 1000000.
Ας λύσουμε το πρόβλημα που τίθεται:
<?php
$sum = 0;
for ($i = 1; $i <= 1000000; $i++) {
$sum += $i;
}
echo $i;
?>
Τι δεν πάει λοιπόν; Το θέμα είναι ότι για την επίλυση του προβλήματος που τίθεται υπάρχει μια μαθηματική λύση.
Αυτή η λύση σχεδόν δεν απαιτεί πόρους! Ας την προγραμματίσουμε:
<?php
$n = 1000000;
$sum = $n * ($n + 1) / 2;
echo $sum;
?>
Το διδακτικό μάθημα: πριν από την επίλυση ενός προβλήματος που απαιτεί πολλούς πόρους βεβαιωθείτε οπωσδήποτε ότι δεν υπάρχει για την επίλυσή του έτοιμος μαθηματικός τύπος ή έτοιμη μαθηματική προσέγγιση.
Βρείτε τον αριθμό των αριθμών που διαιρούνται χωρίς υπόλοιπο
με το 5, στο διάστημα από το 1 έως
το 1000.
Βρείτε τον αριθμό των ψηφίων που θα απαιτηθούν,
για να γραφούν όλοι οι αριθμοί από το 1 έως το 1000000.
Βρείτε όλους τους πρώτους αριθμούς στο διάστημα από
το 1 έως το 10000. Πρόβλημα με αστερίσκο,
δεν είναι υποχρεωτική η επίλυσή του.