* Scrivere un metodo ricorsivo exDue con le seguenti caratteristiche:
* a) exDue lavora su un array a passato per riferimento;
* b) exDue restituisce l'array a, modificato in modo che:
* 1) tutti e soli gli elementi di a per cui il metodo test dato e' vero siano incrementati di 1;
* 2) l'indice che guida la ricorsione CRESCA durante le chiamate ricorsive.
*
* ESEMPI.
* Se b-->{0, 2, 5, 1, 4} allora exDue(b) restituisce b-->{0, 3, 6, 1, 4}.
* Se b-->{2, 5, 8} allora exUno(b) restituisce b-->{3, 6, 9}.
* Se b-->{2} allora exUno(b) restituisce b-->{3}.
* Se b-->{1} allora exUno(b) restituisce b-->{1}.
* Se b-->{} allora exUno(b) restituisce b-->{}.
Il metodo test dato è il seguente:
- Codice:
private static boolean test(int x) {
return (x % 3 == 2);
}
La mia soluzione è la seguente:
- Codice:
public static int[] exDue(int[] a){
int i=0;
if(a!=null){
return exDueRic(a,i);
}
else{
return null;
}
}
public static int[] exDueRic(int[] a,int i){
if(i<a.length){
if(test(a[i])==true){
a[i]++;
}
return exDueRic(a,i+1);
}
else{
return a;
}
}
Quello che mi chiedo è:"sarebbe possibile svolgere tale esercizio senza richiamare metodi di supporto e/o passare come
parametro formale l' indice che guida la ricorsione?"
Ringraziamenti anticipati a chiunque sappia darmi una risposta!!
Saluti