Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
193 views

Για την επίλυση της 2ης άσκησης χρησιμοποιώ μία μεταβλητή δομή δεδομένων (δηλαδή που επιτρέπει την αλλαγή των στοιχείων της αφού ορισθεί) από τη βιβλιοθήκη της ML. Για να την αρχικοποιήσω όπως επιθυμώ καλώ μια συνάρτηση που θέτει ένα ένα κάθε στοιχείο της: θέτει ένα στοιχείο και, μέσω αναδρομής, γεμίζει ύστερα και τα υπόλοιπα στοιχεία της δομής. Η συνάρτηση παίρνει σαν παράμετρο τη δομή και κάποια άλλα πράγματα (μια λίστα και ακεραίους). Επίσης, καλείται σε ένα σημείο με μερικά nested let val ... in ... end. Το πρόγραμμα σε αυτό το σημείο χρειάζεται συνολικά 263184 KB μνήμης με είσοδο το τελευταίο ορατό test case του plgrader. Tι μπορεί να πηγαίνει στραβά?

in pl1 by (420 points) | 193 views
0

Δε νομίζω ότι μπορούμε να έχουμε επαρκή στοιχεία για να βρούμε τι φταίει, χωρίς τον κώδικά σου. Η διαίσθησή μου λέει ότι πρέπει να κάνεις την αναδρομική σου συνάρτηση tail recursive.

0

Έχω την εντύπωση ότι είναι ήδη tail recursive. Ο κώδικάς μου έχει τη δομή
if (...) then
αναδρομή
else let val (...) and (...) in
( side effect που γεμίζει ένα στοιχείο της δομής; αναδρομή )
handle εξαίρεση => αναδρομή
end;

0

Αυτό νομίζω λύθηκε. Βάλε σε παρακαλώ μία σύντομη απάντηση με το τι έφταιγε.

Please log in or register to answer this question.

301 questions

289 answers

288 comments

769 users