Pages: [1]   Go Down
Print
Author Topic: Aiuto esercizio ricorsivo  (Read 1061 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« on: 10-05-2010, 10:51:45 »

Stavo facendo un esercizio ricorsivo che mi inverte gli array generici
Code:
 
public class InvertiArray<E>{
public static E[] ArrayReverse(E[] A, int i, int j){
if(i<j){
E temp=A[i];
A[i]=A[j];
A[j]=A[i];
}
return ArrayReverse(E[] A, ++i, --j);
}

}
Questi sono gli errori che il compilatore mi da testate:
Code:
invertiArray.java:8: '.class' expected
return ArrayReverse(E[] A, ++i, --j);
                        ^
invertiArray.java:8: ';' expected
return ArrayReverse(E[] A, ++i, --j);
                         ^
invertiArray.java:8: ';' expected
return ArrayReverse(E[] A, ++i, --j);
                              ^
invertiArray.java:8: not a statement
return ArrayReverse(E[] A, ++i, --j);
                                  ^
invertiArray.java:8: ';' expected
return ArrayReverse(E[] A, ++i, --j);
                                   ^
5 errors
Help pleaseeee!!!!!
Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
cock86
Forumista Eroico
*****
Offline Offline

Posts: 2.014


OM


« Reply #1 on: 10-05-2010, 11:23:37 »

?? non capisco un paio di cose!
Code:
E temp=A[i];
A[i]=A[j];
A[j]=A[i];
perchè la terza riga rimette in A[ j ] A[ i ] che contiene A[ j ] stesso per la riga due, non dovresti mettere temp per avere uno scambio?
e poi
Code:
return ArrayReverse(E[] A, ++i, --j);
perchè nel primo parametro scrivi anche il tipo? dovresti scrivere solo A.
« Last Edit: 10-05-2010, 12:03:54 by cock86 » Logged

Un "buon informatico" trova una soluzione ad ogni tipo di problema. Un "ottimo informatico" trova la soluzione più efficiente ad ogni tipo di problema! Non stancatevi di migliorare la vostra soluzione!
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #2 on: 10-05-2010, 16:35:15 »

Le cose fatte di prescia vengono sempre male .......thanks ok
Ma il generico E può essere utilizzato in un metodo statico???
Code:
public class InvertiArray<E>{
public static E[] ArrayReverse(E[] A, int i, int j){
if(i<=j) return A[i];
else if(i<j){
E temp=A[i];
A[i]=A[j];
A[j]=temp;
return ArrayReverse(A, i+=1, j+=1);
}
}
public static void main(String[] args){
long start=System.nanoTime();
int[] A = new int[10];
System.out.println(ArrayReverse(A, 0, A.length-1).toString());
long end=System.nanoTime();
System.out.println(end-start+"ns");
}
}
ERRORI nel compilatore:
Code:
invertiArray.java:2: non-static class E cannot be referenced from a static context
public static E[] ArrayReverse(E[] A, int i, int j){
                               ^
invertiArray.java:2: non-static class E cannot be referenced from a static context
public static E[] ArrayReverse(E[] A, int i, int j){
              ^
invertiArray.java:5: non-static class E cannot be referenced from a static context
E temp=A[i];
^
3 errors
>Exit code: 1
« Last Edit: 10-05-2010, 17:21:39 by peppe89ct » Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #3 on: 10-05-2010, 19:18:14 »

Problema risolto!!
grazie lo stesso
Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
cock86
Forumista Eroico
*****
Offline Offline

Posts: 2.014


OM


« Reply #4 on: 10-05-2010, 21:42:12 »

mi spiace ho letto ora! l'importante è che hai risolto... comunque perchè non posti? così se qualcun altro ha il tuo stesso problema riesce a risolvere 
 
Logged

Un "buon informatico" trova una soluzione ad ogni tipo di problema. Un "ottimo informatico" trova la soluzione più efficiente ad ogni tipo di problema! Non stancatevi di migliorare la vostra soluzione!
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #5 on: 12-05-2010, 20:30:38 »

Bella idea cock86
Code:
public static void ArrayReverse(int[] A, int i, int j){
if(j<A.length/2) return ;
int temp=A[i];
A[i]=A[j];
A[j]=temp;
ArrayReverse(A, i+=1, j-=1);
}
Questo è il metodo...alla fine ho messo int per prova ma si può mettere benissimamente Object o Comparable....
Ovviamente per postare e utilizzare questo codice ci sn i diritti di privacy tenuti da me stesso al modico costo di 20€ a riga di codice.....(Uno ci prova...ihihihihihi)
Scherzo ovviamente....
Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
cock86
Forumista Eroico
*****
Offline Offline

Posts: 2.014


OM


« Reply #6 on: 12-05-2010, 21:01:23 »

20 per ogni riga!?!? postatvo tutti i miei codici fatti finora!!!
Logged

Un "buon informatico" trova una soluzione ad ogni tipo di problema. Un "ottimo informatico" trova la soluzione più efficiente ad ogni tipo di problema! Non stancatevi di migliorare la vostra soluzione!
peppe89ct
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 288


very normal people


« Reply #7 on: 12-05-2010, 21:31:05 »

Ognuno ha le proprie iniziative!!!!!!ahahahah
Logged

"Real programmers always confuse Halloween and Christmas 'cause 31oct = 25dec"
Pages: [1]   Go Up
Print
Jump to: