Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: Daréios89 on 14-04-2010, 21:54:09



Title: Esercizio ricorsivo, scorretto?
Post by: Daréios89 on 14-04-2010, 21:54:09
Ho provato a fare l'esercizio in cui bisogna scrivere un metodo che prenda in input un char e un array di caratteri e dica se il carattere è presente nell'array o meno, solo che non so se si può considerare fatto bene, ecco:

Code:
public class Appartenenza
{
public static void main(String [] args)
{
char [] s={'a','b','7','u','f','4','f'};
char c='a';
System.out.println(control(c,s));
}


       static int i=0;

public static boolean control(char a, char [] s)
{

boolean trovato=false;

assert s!=null;
assert i<s.length;

if(a==s[i]) return trovato=true;
else{
i++;
if(i<s.length)
return control(a,s);
      }
     
     
      return trovato;


/*boolean control=false;
for(int i=0; i<s.length; i++)
{
if(s[i]==a)
control=true;
}

return control;*/

}

}


Non so se è lecito creare quella static int i fuori dal metodo, all'interno di control() richiamo il metodo stesso, ma per come l'ho scritto va bene o è iterativo?


Title: Re:Esercizio ricorsivo, scorretto?
Post by: KingDavid on 14-04-2010, 22:03:56
per evitare di crearti la variabile static i esterna la devi inserire come parametro della funzione
Code:
control(char a, char [] s, int i)
Ovviamente in tale caso, nel main dovresti invocare la funzione nella seguente maniera:
Code:
System.out.println(control(c,s, 0));
E la tua funzione è certamente ricorsiva.


Title: Re:Esercizio ricorsivo, scorretto?
Post by: Daréios89 on 14-04-2010, 22:09:03
Ah bene, non avevo considerato di inserire la variabili nel metodo perchè il prof non l'aveva specificato, ma pensandoci non è scorretto, d'altronde in qualche modo dovrò pur scorrere l'array  .rido
Grazie mille.