Προς το περιεχόμενο
  • 0

java και αναδρομη.


Gallahad23

Ερώτηση

Γεια σας παιδια,

Ειμαι καινουργιος στον χωρο του προγραμματισμου και θα ηθελα την βοηθεια σας σε μια ασκηση.

 

εχω βρει μια ασκκηση που ναι μεν καταλαβαινω οτι τηα παει με αναδρομη (λογικα) αλλα θα ηθελα αν γινετε και εχετε την διαθεση φυσικα να με βοηθήσετε.

 

Η ασκηση ειναι η εξης:

 

πρεπει να κατασκευασουμε ενα προγραμμα που στο τερματικο του θα εμφανιζει τριγωνα με το στοιχειο *.

π.χ ενα τριγωνο μεγεθους 3 ειναι το παρακατω

*

**

***

 

το μεγεθοσ του τριγωνου θα εκσαρταται απο τον αριθμο που θα εισαγει ο χρηστης.

Αν δωθει ενασ αρνητικος αριθμος το τριγωνο θα πρεπει να ειναι απο την αλλη πλευρα.

π.χ

*

**

***

 

επισης δν πρεπει να χρισημοποιηθουν οι εντολεσ for, while kai do-while.

 

 

Ευχαριστω πολυ

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

12 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

  • 0
Δημοσ. (επεξεργασμένο)

Ρίξε μια ματιά σε αυτό

 

>
    private void Pyramid(int Max, int Line, int Pos){
        int line=Line;
        int pos = Pos;
        if(line != Max){
           if(pos != line){
               System.out.print("*");
               Pyramid(Max,line,Pos+1);
           }else{
               System.out.println();
               line++;
               Pos=0;
               Pyramid(Max, line, Pos); 
           }
                  
       }                             
   } 

 

Max είναι ο αριθμός που θα δίνει ο χρήστης και θα περνάει κάθε φορά ως παράμετρος για να ξέρει η εφαρμογή που να σταματήσει

Line είναι η τρέχουσα γραμμή που τυπώνει το πρόγραμμα

Pos είναι η θέση που θα γραφτεί το επόμενο *

η κλήση της συνάρτησης γίνεται έτσι : Pyramid(6,0,0); αντί για 6 δώσε την τιμή που δίνει ο χρήστης

Δουλεύει μόνο για θετικούς δεν κατάλαβα ακριβώς τη διαφορά στους αρνητικούς αλλά κάνε και εσύ το υπόλοιπο.

Αν δεν καταλαβαίνεις τι γίνεται ρώτα ξανά.

Επεξ/σία από xlomo
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

goto επιτρεπεται; :P :P

Λοιπον σοβαρα, για να σε βοηθησω, ολες οι αναδρομες εχουν μια συνθηκη τερματισμου και ενα "εμεσο" loop που το κανεις με αναδρομικη κληση.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

>//	triangle
//      	*
//     	**
//    	***
//   	****
//  	*****
// 	******
public class triangle {   
public static void main(String[] args) {
   	int upsos = 6;
   	String c = "*";
   	//klisi tis static me8odou pou ektuponei to sxima
   	Draw(upsos,c);
}
public static void Draw(int b , String c){
   	// loop b foron gia ka8e grammi
   	for (int i=0;i<=b;i++)
   	{
       	//loop b-i foron gia tin ektuposi ton kenon
       	for (int j=0;j<b-i;j++){
           	System.out.print(" ");
       	}
       	//loop b foron gia tin ektuposi tou xaraktira
       	for (int j=b-i;j<b;j++){
           	System.out.print(c);
       	}
       	/* sunartisi print gia tin allagi grammis 
       	otan ftasei se platos tin timi tou upsous*/ 
       	System.out.println();
   	}
}
}

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Καλησπέρα παιδιά!! Θέλω κι εγώ βοήθεια σε κάτι παρόμοιο:

 

Υποθέτουμε ότι m<n η συνάρτηση θα τυπώνει 2(n-m)+1 γραμμές με αστερίσκους όπου η
πρώτη γραμμή έχει m αστερίσκους η επόμενη m+1 μέχρι τη γραμμή με n αστερίσκους. Μετά
επαναλαμβάνεται μειώνοντας κατά 1 τους αστερίσκους μέχρι να γίνουν m.
Για παράδειγμα η κλήση της trigono(4, 8) θα τυπώσει το:
****
*****
******
*******
********
*******
******
*****
****
μήπως μπορεί να βοηθήσει κανείς?
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

αποτι βλεπω μερικοι χρησιμοποιειτε κεφαλαια στην αρχη των ονοματων μεταβλητων και συναρτησεων, το οποιο στην Java δεν ειναι και τοσο καλο :wacko:

  • Like 1
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

μήπως μπορεί να βοηθήσει κανείς?

 

Αν έκανες τον κόπο να διαβάσεις το θέμα στο οποίο πόσταρες, παραπάνω υπάρχει έτοιμος κώδικας FFS που τυπώνει τρίγωνο. Δεδομένου ότι αυτό που θες εσύ είναι στην ουσία δύο τρίγωνα με κολλημένες πλάτες υποθέτω ότι μπορεί να σε βοηθήσει αν το μελετήσεις.

 

Εκτός αν εννοείς να σε βοηθήσει == να σου το δώσει μασημένη μπουκιά.

  • Like 1
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Αν έκανες τον κόπο να διαβάσεις το θέμα στο οποίο πόσταρες, παραπάνω υπάρχει έτοιμος κώδικας FFS που τυπώνει τρίγωνο. Δεδομένου ότι αυτό που θες εσύ είναι στην ουσία δύο τρίγωνα με κολλημένες πλάτες υποθέτω ότι μπορεί να σε βοηθήσει αν το μελετήσεις.

 

Εκτός αν εννοείς να σε βοηθήσει == να σου το δώσει μασημένη μπουκιά.

 

Εννοείται πως διάβασα τις παραπάνω λύσεις, γι'αυτό και έγραψα το δικό μου πρόβλημα εδώ αν το παρατήρησες, και η μόνη δυσκολία που βρίσκω στο πρόβλημα μου είναι και η μοναδική του διαφορά με το πρόβλημα του Gallahad23, η αναστροφή δηλαδή του τριγώνου από τη μεσαία γραμμή και κάτω. Αυτό ήλπιζα ότι κάποιος να με βοηθούσε να κατανοήσω.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

 

Καλησπέρα παιδιά!! Θέλω κι εγώ βοήθεια σε κάτι παρόμοιο:

 

Υποθέτουμε ότι m<n η συνάρτηση θα τυπώνει 2(n-m)+1 γραμμές με αστερίσκους όπου η
πρώτη γραμμή έχει m αστερίσκους η επόμενη m+1 μέχρι τη γραμμή με n αστερίσκους. Μετά
επαναλαμβάνεται μειώνοντας κατά 1 τους αστερίσκους μέχρι να γίνουν m.
Για παράδειγμα η κλήση της trigono(4, 8) θα τυπώσει το:
****
*****
******
*******
********
*******
******
*****
****
μήπως μπορεί να βοηθήσει κανείς?

 

 

 

Ο αλγόριθμος είναι απλός:

  • Για χ = m έως χ = n, τύπωσε χ αστερίσκους
  • Για χ = n - 1 έως χ = m, τύπωσε χ αστερίσκους

 

Σε ποιο σημείο ακριβώς έχεις πρόβλημα;

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ευχαριστώ για τη βοήθεια!

 

t.(o.ot) εκεί ακριβώς είχα το πρόβλημα, το είχα γράψει έτσι και αντί να μου αντιστρέφει το τρίγωνο έκανε αυτό:

 

****

*****

******

*******

********

****

********

*****

********

******

********

*******

********

αλλά μετά διαπίστωσα ότι είχα κάνει μια μεγάλη βλακεία στα for και στην εμφώλευση,όμως το βρήκα με τη βοήθειά σας!

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.