g1wrg0s
Επιφανές μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Η αναδρομη εχει αυτο το σκοπο.
π.χ
Προβλημα _______λυση προβληματος
| _______________|
υποπροβλημα __ λυση υποπρο.
| ______________ |
υποπροβλημα ---->/
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Η κληση min ποιο υποπροβλημα καλειται να λυσει ; Για ποιο λογο θες να τη καλεις ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Παμε στο επομενο ζητημα. Σκεψου οτι αν μια συναρτηση καλει τον εαυτο της επ απειρον απλα το προγραμμα σου θα τρεχει μεχρι να crashαρει. Αρα χρειαζεσαι μια συνθηκη τερματισμου η οποια θα λεει "δε μπορω να σπασω το προβλημα σε αλλο μικροτερο υποπροβλημα, γυρνα πισω". Εσυ ποια συνθηκη εχεις στον κωδικα σου που να αποτρεπει το προγραμμα να τρεχει για παντα ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Το πρόβλημα το έχω στην συνάρτηση min(double T[],int m,int *index)... Δεν ξέρω πως να την κάνω με αναδρομή..Code:#include <stdio.h> #include "simpio.h" #include "genlib.h" #define n 50 double min(double T[], int m,int *index); int main(void) { double T[n]; double a; int m; int index; int i; printf("Poses theseis apo ton pinaka na desmeutoun? "); scanf("%d", &m); printf("Dwse ta stoixeia tou pinaka T \n"); for(i=0;i<m;i++) { scanf("%d",T[i]); } a = min(T,m,&index); printf("To elaxisto einai to %ld kai vrisketai sthn %dh thesh",a,index); system("pause"); } double min(double T[],int m,int *index) { double a; int i; for(i=0;i<m;i++) { if(i=0) { a = T[i]; *index = i; } else { if(a < T[i]) { a = min(T, m, index); } } } return a; }
αρχικα, φτιαχνω το κωδικα σου για να μπορει να διαβαζεται
και πριν μπουμε στα του κωδικα σου και δεδομενου οτι εχεις κατανοησει την εννοια της αναδρομης. Για ποιο λογο καλεις ξανα την min μεσα στο body της min ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
κωδικας[προσεχε αυτο->/code])
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
αυτο πιστευω θα ηταν πιο αποδοτικο αν ηταν ταξινομημενοςαναδρομικά λέει η άσκηση. Το πιο απλό που μπορώ να σκεφτώ είναι σπας τον πίνακα στα 2 και σε κάθε κλήση απλά υποδιπλασιάζεις το μέγεθος των 2 υποπινάκων, μέχρι να συγκρίνεις 2 αριθμούς. Αλλά δε ξέρω κατά πόσο έχει νόημα να του το δώσουμε έτοιμο εφόσον ζητά μόνο βοήθεια.
εχω την εντυπωση οτι βγαινει και χωρις static. το λεω γιατι το παιδι μπορει να μην εχει ιδεα τι ειναι το static... Αλλα ας παραθεσει τη προσπαθεια του να τον βοηθησουμε οσο μπορουμε...Ποοο ούτε καν είδα το αναδρομικά, αναδρομικά γίνεται εύκολα και με static μεταβλητές, με κάθε κλίση αυξάνεις το i κατά ένα και κάνεις το ίδιο
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.