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

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
vagos_23
Buffer underflow exception
Buffer underflow exception
Posts: 3
Joined: Sat Oct 24, 2009 12:22 am
Academic status: N>4
Gender:

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

Post by vagos_23 » Sat Oct 24, 2009 12:33 am

Παρακάτω παραθέτω τον αλγόριθμο επίλυσης των πύργων του 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);
          }
}
Last edited by enum21 on Sat Oct 24, 2009 10:26 am, edited 2 times in total.
Reason: added code
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

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

Post by tsilochr » Sat Oct 24, 2009 4:12 am

βλέποντας το κώδικα που παραθέτεις (είνα αργά για να δω αν είναι ο σωστός), στο else θα μπει για rings!=1 και θα με΄σα στο else κάνει 2 αναδρομές
User avatar
~~Wind~~
Gbyte level
Gbyte level
Posts: 1747
Joined: Thu Nov 30, 2006 1:07 am
Academic status: N>4
Gender:
Location: *void

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

Post by ~~Wind~~ » Sat Oct 24, 2009 6:59 am

Οι εντολές (-συνήθως-) εκτελούνται σειριακά,
άρα πρώτα θα μπει στη νέα αναδρομή, και μετά αν το rings==1 θα εκτελέσει την printf
αν δεν είναι θα συνεχίσει σε νέα αναδρομή .. κοκ

και ναι, ο κώδικας δεν είναι σωστός.
ImageImage
Come to foss-aueb ...we have cookies.. yamyam~nomnomnomnomnomnomnomnom
a cookie ~ I will do science to it
vagos_23
Buffer underflow exception
Buffer underflow exception
Posts: 3
Joined: Sat Oct 24, 2009 12:22 am
Academic status: N>4
Gender:

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

Post by vagos_23 » Sat Oct 24, 2009 1:02 pm

ΟΚ με την else.. Αν υποθέσουμε ότι rings>>1 τότε αφού εκτελέσει την πρώτη αναδρομή όταν ξαναγυρήσει στην else θα πάει μία γραμμή πιο κάτω στην printf;
Και αφού τυπώσει το μνμ συνεχίζει στην πιο κάτω γραμμή με την αναδρομή;;Εδώ είναι η απορία μου..Η σειρά εκτελέσεων των εντολών, διότι έτσι όπως το βλέπω εγώ μου φένεται ότι όο rings!=1 μόνο η πρώτη γραμμή θα εκτελείται στην else..
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

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

Post by tsilochr » Sat Oct 24, 2009 1:05 pm

όχι, άπαξ και μπει μέσα στο else, θα εκτελέσει όλες τις εντολές του μπλοκ
vagos_23
Buffer underflow exception
Buffer underflow exception
Posts: 3
Joined: Sat Oct 24, 2009 12:22 am
Academic status: N>4
Gender:

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

Post by vagos_23 » Sat Oct 24, 2009 1:26 pm

Thanks συνάδελφε νομίζω πως κατάλαβα πως γίνεται.... :smt023
Post Reply

Return to “Προγραμματισμός”