προγραμματισμός - αναδρομικοί αλγόριθμοι

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

προγραμματισμός - αναδρομικοί αλγόριθμοι

Δημοσίευσηαπό demi » 28 Ιουν 2009, 13:59

Γεία σας θα ήθελα να μάθω πως υλοποιούνται οι αναδρομικοί αλγόριθμοι. Έχω ψάξει στο internet σχετικά με την αναδρομή και έχω βρει ελάχιστα παραδείγματα ανγνωρίζετε κάτι μπορείτε να μου πείτε?
Τελευταία επεξεργασία από Nisok και 29 Ιουν 2009, 12:09, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: Έφτιαξα τον τίτλο
demi
babeTUX
babeTUX
 
Δημοσιεύσεις: 19
Εγγραφή: 07 Φεβ 2009, 22:04
Εκτύπωση

Re: προγραμματισμος

Δημοσίευσηαπό medigeek » 28 Ιουν 2009, 16:13

Στο google έδωσα "aναδρομικοί αλγόριθμοι" (recursive algorithm) και μου εμφάνισε το ακόλουθο:
http://aetos.it.teithe.gr/~adamidis/Pro ... ursion.pdf

http://stackoverflow.com/questions/2488 ... -generator
http://igordevlog.blogspot.com/2007/08/ ... ython.html
http://pthree.org/2007/01/18/simple-recursion-in-perl/

Σε βοηθάει καθόλου; :)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: προγραμματισμος

Δημοσίευσηαπό medigeek » 28 Ιουν 2009, 18:53

Στο μέλλον να σε παρακαλέσω να βάζεις πιο περιγραφικό θέμα, π.χ.:
"προγραμματισμός - αναδρομικοί αλγόριθμοι"
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: προγραμματισμος

Δημοσίευσηαπό demi » 29 Ιουν 2009, 00:30

Ευχαριστώ πολύ για την βοήθεια και συγνώμη για την περιγραφή μου.
demi
babeTUX
babeTUX
 
Δημοσιεύσεις: 19
Εγγραφή: 07 Φεβ 2009, 22:04
Εκτύπωση

Re: προγραμματισμος

Δημοσίευσηαπό logari81 » 29 Ιουν 2009, 12:08

@demi
θα ήθελα να σε παρακαλέσω να επεξεργαστεις τον αρχικό σου τίτλο και να βαλεις κατι πιο συγκεκριμένο

http://opensourceecology.org/


Λειτουργικό: Ubuntu 10.04 lucid 64-bitΠροδιαγραφές: 4x Intel Core i5 CPU M 450 2.40GHz ‖ RAM 3696 MiB ‖ Lenovo KL3 - LENOVO IdeaPad Y560
Κάρτα γραφικών: ATI Device [1002:68c0]Ασύρματο: wlan0: Atheros Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
logari81
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6074
Εγγραφή: 14 Μάιος 2008, 10:40
Εκτύπωση

Re: προγραμματισμός - αναδρομικοί αλγόριθμοι

Δημοσίευσηαπό logari81 » 29 Ιουν 2009, 12:19

ωραία ο νεος τίτλος μου φαίνεται αρκετα καλός, μετέφερα επίσης το θεμα στην ενότητα όπου ταιριαζει καλύτερα

http://opensourceecology.org/


Λειτουργικό: Ubuntu 10.04 lucid 64-bitΠροδιαγραφές: 4x Intel Core i5 CPU M 450 2.40GHz ‖ RAM 3696 MiB ‖ Lenovo KL3 - LENOVO IdeaPad Y560
Κάρτα γραφικών: ATI Device [1002:68c0]Ασύρματο: wlan0: Atheros Inc. AR928X Wireless Network Adapter (PCI-Express) [168c:002a] (rev 01)
logari81
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 6074
Εγγραφή: 14 Μάιος 2008, 10:40
Εκτύπωση

Re: προγραμματισμός - αναδρομικοί αλγόριθμοι

Δημοσίευσηαπό Ntelispak » 03 Ιούλ 2009, 15:51

Έστω ότι θες να προγραμματίσεις μια διαδικασία η οποία έχει πολλαπλές εκφάνσεις είτε στο πεδίο του χρόνου(αλλάζει διαχρονικά), είτε γενικότερα σε κάποιο άλλο πεδίο (πχ στο πεδίο των φυσικών - υπολογισμός παραγοντικού κλπ). Όσο πιο γενικά μπορώ να το παρουσιάσω, για να ορίσεις έναν αναδρομικό αλγόριθμο πρέπει να ισχύουν τα δυο παρακάτω:
1. Η κατάσταση που θέλεις να προγραμματίσεις σε μια έκφανσή της να είναι συνάρτηση των υπόλοιπων εκφάνσεων της,είτε ολικώς είτε μερικώς.
2. Να ορίζονται οι κατάλληλες αρχικές ή τελικές συνθήκες ώστε να μπορεί να λυθεί το πρόβλημα (να είναι δηλαδή καλά ορισμένο)

Για παράδειγμα ο υπολογισμός της ακολουθίας fibonacci ικανοποιεί την πρώτη συνθήκη [φ(ν) = φ(ν-1)+φ(ν-2)] και την δεύτερη ορίζοντας [φ(1)=1 & φ(2)=2] . Το GNU=GNU is Not Linux ικανοποιεί την πρώτη συνθήκη αλλά όχι την δεύτερη και έτσι δεν ορίζεται με την αυστηρή έννοια του όρου. Αντίστοιχα προβληματικός είναι ο ορισμός για το Tikz= Tikz Ist Kein Zeichenprogramm.

Υλοποιείς έναν αναδρομικό αλγόριθμο, όταν λύνεις ένα πρόβλημα που ορίζεται αναδρομικά χρησιμοποιώντας τις συνθήκες 1 και 2. Το παράδειγμα του παραγοντικού που σου υπέδειξε ο @medigeek είναι ιδανικό για ξεκίνημα. Πολλά αναδρομικά προβλήματα μπορούν να λυθούν και μέσω επαναλήψεων (for κλπ), αλλά οι αναδρομικές λύσεις τείνουν να είναι ταχύτερες. Αν χρειάζεσαι περισσότερες ή ειδικότερες πληροφορίες γράψε... και πες μας και σε τι γλώσσα θες να τον υλοποιήσεις.
Οδηγείες ΧρήσηςΤutorialsΑναζήτηση
⇛ Linux: noob ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Πολύ Καλά
⇛ Xubuntu 9.04 (Jaunty Jackalope) 64bit
⇛ Intel Core2Duo E6600 (2.4GHZ 4MB) ┃ Asus P5B 965 ┃ 2x1GB DDR2 667MHZ ┃ Radeon X1600P 256MB ┃ MAudio Audiophile 192
Άβαταρ μέλους
Ntelispak
babeTUX
babeTUX
 
Δημοσιεύσεις: 36
Εγγραφή: 19 Ιουν 2009, 20:15
Τοποθεσία: Μεταμόρφωση Αττικής
Εκτύπωση

Re: προγραμματισμός - αναδρομικοί αλγόριθμοι

Δημοσίευσηαπό lyrisias » 08 Ιούλ 2009, 19:48

Αναδρομή φίλε είναι με απλά λογια όταν μια συνάρτηση καλεί τον εαυτό της μέσα της...

Κώδικας: Επιλογή όλων
int func(int a)
{
int num=0;
if (a>1)
num=a*func(a-1);
else
num=1;
return num;
}

αν δλδ καλέσουμε την συνάρτηση αυτή
func(5);
θα επιστρέψει 1*2*3*4*5 = 120. (αν θυμάμαι καλά αυτό έιναι στα μαθηματικά !5)
Καλό θα ήταν να μη σου χρειαστεί ποτέ η αναδρομη σε πρόγραμμα
είναι πολύ βαριά πράξη.
1001000 1100101 1101100 1101100 1101111
Άβαταρ μέλους
lyrisias
babeTUX
babeTUX
 
Δημοσιεύσεις: 77
Εγγραφή: 04 Μάιος 2009, 19:47
Εκτύπωση

Re: προγραμματισμός - αναδρομικοί αλγόριθμοι

Δημοσίευσηαπό mrjack » 08 Ιούλ 2009, 20:43

lyrisias έγραψε:
Καλό θα ήταν να μη σου χρειαστεί ποτέ η αναδρομη σε πρόγραμμα
είναι πολύ βαριά πράξη.


Και πολυ χρησιμη σε καποιες συναρτησεις.

Το πρωτο link που δινει ο medigeek νομιζω ειναι αρκετο για να λυθουν πιθανες αποριες.
Άβαταρ μέλους
mrjack
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 625
Εγγραφή: 06 Φεβ 2009, 03:45
Τοποθεσία: Θεσσαλονίκη
IRC: mrjack
Εκτύπωση

Re: προγραμματισμός - αναδρομικοί αλγόριθμοι

Δημοσίευσηαπό Dimitris » 09 Ιούλ 2009, 00:52

lyrisias έγραψε:
Καλό θα ήταν να μη σου χρειαστεί ποτέ η αναδρομη σε πρόγραμμα
είναι πολύ βαριά πράξη.

Nα υποθέσω ότι δεν έχεις ακούσει για τη γλώσσα haskell. Δεν έχει βρόχους (loops) αλλά τους υλοποιεί με αναδρομικές συναρτήσεις. Η lisp είναι κι αυτή μια από τα ίδια μου φαίνεται. Δεν είναι βαριά πράξη, απλώς δεν έχουμε μάθει να σκεφτόμαστε έτσι. Στο λύκειο τις ακολουθίες τις μαθαίναμε και αναδρομικά, για να μη πω για τους φόρους που πληρώνουμε αναδρομικά :lol:
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι