Page 1 of 1

Ερώτηση σχετικα με λειτουργεία αναδρομής

Posted: Sat Oct 24, 2009 12:33 am
by vagos_23
Παρακάτω παραθέτω τον αλγόριθμο επίλυσης των πύργων του Hanoi. Αυτό που δεν μπορώ να καταλάβω και ζητάω τη βοήθεια σας είναι μέσα στο σκέλος της else
δεν μπορώ να καταλάβω γίνεται αναδρομή μία φορά από τη στιγμή που το rings !=1 μετά την κλήση θα επιστρέψει στην printf η θα γίνει και επόμενη αναδρομή μέχρι rings==1;;
Γενικά 2 αναδρομές μέσα στην ίδια else με έχει κάνει να τα χάσω.. HELP

Code: Select all

void hanoitowers(int rings, int start, int goal, int spare)
{
if(rings = = 1)
           printf("Move from %d to %d \n", start, goal);
else
          {
           hanoitowers(rings-1, start, spare, goal);
           printf("Move from %d to %d \n", start, goal);
           hanoitowers(rings-1, spare, goal, start);
          }
}

Re: Ερώτηση σχετικα με λειτουργεία αναδρομής

Posted: Sat Oct 24, 2009 4:12 am
by tsilochr
βλέποντας το κώδικα που παραθέτεις (είνα αργά για να δω αν είναι ο σωστός), στο else θα μπει για rings!=1 και θα με΄σα στο else κάνει 2 αναδρομές

Re: Ερώτηση σχετικα με λειτουργεία αναδρομής

Posted: Sat Oct 24, 2009 6:59 am
by ~~Wind~~
Οι εντολές (-συνήθως-) εκτελούνται σειριακά,
άρα πρώτα θα μπει στη νέα αναδρομή, και μετά αν το rings==1 θα εκτελέσει την printf
αν δεν είναι θα συνεχίσει σε νέα αναδρομή .. κοκ

και ναι, ο κώδικας δεν είναι σωστός.

Re: Ερώτηση σχετικα με λειτουργεία αναδρομής

Posted: Sat Oct 24, 2009 1:02 pm
by vagos_23
ΟΚ με την else.. Αν υποθέσουμε ότι rings>>1 τότε αφού εκτελέσει την πρώτη αναδρομή όταν ξαναγυρήσει στην else θα πάει μία γραμμή πιο κάτω στην printf;
Και αφού τυπώσει το μνμ συνεχίζει στην πιο κάτω γραμμή με την αναδρομή;;Εδώ είναι η απορία μου..Η σειρά εκτελέσεων των εντολών, διότι έτσι όπως το βλέπω εγώ μου φένεται ότι όο rings!=1 μόνο η πρώτη γραμμή θα εκτελείται στην else..

Re: Ερώτηση σχετικα με λειτουργεία αναδρομής

Posted: Sat Oct 24, 2009 1:05 pm
by tsilochr
όχι, άπαξ και μπει μέσα στο else, θα εκτελέσει όλες τις εντολές του μπλοκ

Re: Ερώτηση σχετικα με λειτουργεία αναδρομής

Posted: Sat Oct 24, 2009 1:26 pm
by vagos_23
Thanks συνάδελφε νομίζω πως κατάλαβα πως γίνεται.... :smt023