free4you Δημοσ. 5 Νοεμβρίου 2014 Share Δημοσ. 5 Νοεμβρίου 2014 (επεξεργασμένο) Καλησπέρα παιδιά Θέλω να υλοποιήσω τις παρακάτω 2 μεθόδους με αναδρομή αλλά με έχουν δυσκολέψει αρκετά!!! Την δεύτερη την δουλεύω και νομίζω ότι βγαίνει αλλά για την πρώτη δεν έχω ιδέα ποια αναδρομική συνάρτηση μπορεί να δουλεύει με αυτό τον τρόπο... Κάθε βοήθεια ευπρόσδεκτη... 1η Μέθοδος: public static void print_p(int k, int i) Το k είναι δύναμη του 2. Η μεγαλύτερη γραμμή του πρότυπου έχει k αστερίσκους αρχίζονταςαπό τη στήλη i. Για παράδειγμα το παρακάτω πρότυπο έχει φτιάχνεται με κλήση της μεθόδουprint_p(8,0). ** * ** * * * * * * ** * * * * * * * * * * * * * * * * * * * 2η Μέθοδος: Εκτύπωση δυαδικού αριθμού. Μέθοδος η οποία θα τυπώνει την τιμή ενός μη αρνητικού ακέραιου σε δυαδική μορφή. Π.χ n=11 θα τυπώνει 1011 n=45 θα τυπώνει 101101 n=64 θα τυπώνει 1000000 Ευχαριστώ... Επεξ/σία 5 Νοεμβρίου 2014 από free4you Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 5 Νοεμβρίου 2014 Share Δημοσ. 5 Νοεμβρίου 2014 Η πρώτη θα γίνει με αναδρομή δύο φορές μέσα στη συνάρτηση. Σα να λέμε void whatever(int n) { if (/* συνθήκη τερματισμού αναδρομής */) return; whatever(n / 2); /* και κάνεις κάτι ακόμα εδώ */ whatever(n / 2); } Μην το κάνεις copy paste, το δίνω ενδεικτικά. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
free4you Δημοσ. 5 Νοεμβρίου 2014 Μέλος Share Δημοσ. 5 Νοεμβρίου 2014 Σε ευχαριστώ πολύ για την απάντηση αλλά δυστυχώς δεν κατάλαβα τι μου λες ότι χρειάζεται να κάνω!!! Βασικά δεν μπορώ να καταλάβω καν τι είναι αναδρομικό στο σχήμα παράδειγμα!!! σίγουρα υπάρχει ένα σχήμα που επαναλαμβάνεται ενδιάμεσα από τις δυνάμεις του 2 αλλά μέχρι εκεί!!! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
albNik Δημοσ. 5 Νοεμβρίου 2014 Share Δημοσ. 5 Νοεμβρίου 2014 Εχει ξαναμπει πριν 2 χρονια Εκανα απόκρυψη μερικών σημείων http://www.adslgr.com/forum/threads/680883-%CE%A3%CF%87%CE%B5%CE%B4%CE%AF%CE%B1%CF%83%CE%B7-%CE%BC%CE%BF%CF%84%CE%AF%CE%B2%CF%89%CE%BD-%CE%BC%CE%B5-(*)-%CE%BC%CE%B5-%CF%87%CF%81%CE%B7%CF%83%CE%B7-%CE%B1%CE%BD%CE%B1%CE%B4%CF%81%CE%BF%CE%BC%CE%B9%CE%BA%CF%89%CE%BD-%CF%83%CF%85%CE%BD%CE%B1%CF%81%CF%84%CE%AE%CF%83%CE%B5%CF%89%CE%BD?p=4892090#post4892090 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 5 Νοεμβρίου 2014 Share Δημοσ. 5 Νοεμβρίου 2014 Εδώ τυπώνεις ένα αστεράκι, μετά μια γραμμή και μετά πάλι ένα αστεράκι. Τελικό αποτέλεσμα ένα "μικρό S": * * * * Εδώ τυπώνεις ένα μικρό S, μετά μια γραμμή και μετά πάλι ένα μικρό S. Τελικό αποτέλεσμα ένα μεσαίο S: * * * * * * * * * * * * Αν δεις πιο μακριά τότε μεσαίο S + γραμμή + μεσαίο S = μεγάλο S. Και πάει λέγοντας. Οπότε έχεις μια συνάρτηση που τυπώνει τα S διαφόρων μεγεθών, και για να τυπώσεις το μέγεθος Χ τυπώνεις μέγεθος Χ - 1 + γραμμή + πάλι μέγεθος Χ - 1. Το "τυπώνω μέγεθος Χ - 1" είναι η αναδρομή. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
free4you Δημοσ. 6 Νοεμβρίου 2014 Μέλος Share Δημοσ. 6 Νοεμβρίου 2014 Προέκυψε και άλλο πρόβλημα!!! Γράφω αυτό για (4,8): public static void trigono(int m, int n) { if (m<n){for (int i = 0; i < m; i++)System.out.print("*");System.out.print("\n");trigono(m+1, n);}else if (m==n){for (int i = 0; i < m; i++)System.out.print("*");System.out.print("\n");trigono(m-1, n);}} Θέλω αυτό: **************************************************** Και μου εμφανίζει αυτό: ********************************************************************************** Τι κάνω λάθος??? Δεν καλώ σωστά την αναδρομή? Συντακτικό δεν πρέπει να είναι, μάλλον στην ιδέα είναι το πρόβλημα ε??? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 Ναι. Ξεκίνα εξηγώντας φωναχτά για ποιό ακριβώς λόγο χρειάζεσαι 2 μεταβλητές αντί για απλά μία. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
akis_fc Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 Ναι. Ξεκίνα εξηγώντας φωναχτά για ποιό ακριβώς λόγο χρειάζεσαι 2 μεταβλητές αντί για απλά μία. Γιατί πιστεύεις ότι αυτό είναι το πρόβλημα και όχι πχ ότι είναι λάθος οι συνθήκες του; Δεν αντιλέγω ότι δεν θα δούλευε και με μία, αν και δεν σκέφτομαι πρόχειρα πως θα δούλευε και θα ήταν το min και το max του τριγώνου διαθέσιμα να τα ορίζει ο χρήστης. (χωρίς την προσθήκη μεταβλητών στην κλάση obv.) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
albNik Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 void trigono(int m, int n) //m<n { print(m); // m φορες if(m == n - 1) print(Ν); // Ν φορες else trigono(m+1, n); print(m); // m φορες } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 Γιατί πιστεύεις ότι αυτό είναι το πρόβλημα και όχι πχ ότι είναι λάθος οι συνθήκες του; Δεν αντιλέγω ότι δεν θα δούλευε και με μία, αν και δεν σκέφτομαι πρόχειρα πως θα δούλευε και θα ήταν το min και το max του τριγώνου διαθέσιμα να τα ορίζει ο χρήστης. (χωρίς την προσθήκη μεταβλητών στην κλάση obv.) Πιστεύω πως το πρόβλημα είναι ότι δεν έχει ξεκάθαρη ιδέα στο μυαλό του για το τι κάνει, οπότε get him talking. Επίσης αν το min του τριγώνου είναι > 1 τότε δε θα είναι τρίγωνο... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
akis_fc Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 Εννοείς θα είναι ενα τρίγωνο πάνω σε ένα ορθογώνιο ? Αν ναι οκ νομίζω απλά προσπαθεί να φτιάξει κάτι που να είναι συμμετρικό με μια κορυφη. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
free4you Δημοσ. 6 Νοεμβρίου 2014 Μέλος Share Δημοσ. 6 Νοεμβρίου 2014 Ναι. Ξεκίνα εξηγώντας φωναχτά για ποιό ακριβώς λόγο χρειάζεσαι 2 μεταβλητές αντί για απλά μία. Τις 2 μεταβλητές της θέλω σαν min, max για να ορίσω πόσα αστεράκια θα έχει η πρώτη σειρά και να αυξάνω κατά 1 σε κάθε επόμενη μέχρι αυτά να γίνουν ίσα και να αρχίσουν να μειώνονται μέχρι να φτάσει πάλι στο min. Καλά δεν το σκέφτομαι??? void trigono(int m, int n) //m<n { print(m); // m φορες if(m == n - 1) print(Ν); // Ν φορες else trigono(m+1, n); print(m); // m φορες } Αυτό δεν νομίζω ότι κάνει αυτό που θέλω... Εννοείς θα είναι ενα τρίγωνο πάνω σε ένα ορθογώνιο ? Αν ναι οκ νομίζω απλά προσπαθεί να φτιάξει κάτι που να είναι συμμετρικό με μια κορυφη. Προσπαθώ να φτιάξω κάτι με αρχική υπόθεση ότι m<n η συνάρτηση θα τυπώνει 2(n-m)+1 γραμμές με αστερίσκους όπου η πρώτη γραμμή έχει m αστερίσκους η επόμενη m+1 μέχρι τη γραμμή με n αστερίσκους. Μετά επαναλαμβάνεται μειώνοντας κατά 1 τους αστερίσκους μέχρι να γίνουν m. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
albNik Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 Αυτό δεν νομίζω ότι κάνει αυτό που θέλω... Αυτο κανει , απλα αντι για print() βαλε τα for loops . Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
free4you Δημοσ. 6 Νοεμβρίου 2014 Μέλος Share Δημοσ. 6 Νοεμβρίου 2014 Βγάζει αστεράκια το ένα κάτω από το άλλο!!! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
albNik Δημοσ. 6 Νοεμβρίου 2014 Share Δημοσ. 6 Νοεμβρίου 2014 το καλεις trigono(2,5); void print(int m) { for (int i = 0; i < m; i++) System.out.print("*"); System.out.print("\n"); } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα