[Java] Stampa Matrice attraverso Metodo Ricorsivo

Messaggioda drakuma » 26/11/2019, 10:10

Salve a tutti. Ho un esercizio che mi chiede di stampare un vettore bidimensionale e dati dei valori preimpostati nel vettore, stampare attrave il contenuto con il metodo ricorsivo, le combinazioni di valori.

Il vettore già riempito è strutturato cosi:

Codice:
String array[][]={
               {"A","B","C"},
               {"1","2","3"},
               {"XX","YY","ZZ"}
            };


Ed dovrebbe stampare a video un esempio tipo questo:

Codice:
A1XXA1YYA1ZZ
A2XXA2YYA2ZZ
A3XXA2YYA2ZZ
B1XXB1YYB1ZZ
B2XXB2YYB2ZZ
B3XXB3YYB3ZZ
C1XXC1YYC1ZZ
C2XXC2YYC2ZZ
C3XXC3YYC3ZZ


Ovviamente è un esempio, va bene anche se le combinazioni partono dalla prima colonna, anzichè dalla prima riga.

Questa è la bozza di programma che ho fatto

Codice:
public class ricorsioneArrayMulti{

   public static String stampaTabella(String[][] array, int i, int j) {
      if(i==array.length-1 && j==array.length-1){
         return array[i][j];
      }else if (j<array.length){
         return array[i][j] + stampaTabella(array, i ,j+1);
      }else{
         return stampaTabella(array,i+1,0);
      }
   }
      
   public static void main(String[] args) {
   String array[][]={
               {"A","B","C"},
               {"1","2","3"},
               {"XX","YY","ZZ"}
            };
   int i=0, j=0;
   String result;
   result=stampaTabella(array,i,j);
      for(int x=0; x<array.length; x++){
         for(int y=0; y<array[i].length; y++){
            System.out.println(result);
         }
      }
   }
}


Il mio problema è che il programma stampa la seguente matrice:

Codice:
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ
ABC123XXYYZZ


Sò come funzionano i cicli annidati per una matrice, ma non sò come devo inserirla all'interno di un metodo per fare in modo che si comporti come in un metodo interattivo.

Ringrazio chinuque mi sappia aiutare.
drakuma
Starting Member
Starting Member
 
Messaggio: 1 di 4
Iscritto il: 26/11/2019, 09:56

Re: [Java] Stampa Matrice attraverso Metodo Ricorsivo

Messaggioda Quinzio » 27/11/2019, 11:03

Questo e' un codice che scrive le strighe desiderate.
E' scritto in Python, ma si traduce in Java quasi immediatamente.
Cerca di capire cosa fa e perche'.
Magari ne parliamo.

Nel tuo codice ci sono degli errori ovvi, tipo quei 2 cicli for annidato che
stampano la stessa stringa. Non c'e' dubbio che la stringa non cambia.
Dal codice che hai scritto si intuisce una certa confusione di base,
che di per se non e' un problema, probabilmente sei agli inizi.
Questo e' un esercizio gia' abbastanza complesso e poco intuitivo,
ti suggerisco di partire o ripartire da qualcosa di piu' semplice.


Codice:
M = [
        ['A', 'B', 'C'],
        ['1', '2', '3'],
        ['XX', 'YY', 'ZZ']
    ]

def f(str, i, j):
    if (j == 3):
        return ''
    if (i == 3):
        return str
    ret = f(str+M[i][j], i+1, 0)
    ret += f(str, i, j+1)
    if (i == 2 and j == 0):
        print(ret)
    return ret

f('', 0, 0)
Quinzio
Cannot live without
Cannot live without
 
Messaggio: 4378 di 10535
Iscritto il: 24/08/2010, 06:50

Re: [Java] Stampa Matrice attraverso Metodo Ricorsivo

Messaggioda drakuma » 27/11/2019, 21:24

Prima di tutto ti ringrazio. Si, effettivamente sono all'inizio con i metodi ricorsivi. Ed devo ammettere che ho avuto anche diverse difficoltà a comprenderli, ma diciamo che bene o male sono riuscito a risolvere piccoli programmini che gli implementano.
Per quanto riguarda il problema dei cicli, si effettivamente avevo intuito che mancava qualcosa, il problema era proprio che non riuscivo a capire cosa e come implementarlo xD
Mi studierò il codice che hai riportato. Grazie ancora.
drakuma
Starting Member
Starting Member
 
Messaggio: 2 di 4
Iscritto il: 26/11/2019, 09:56


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite