welcome: please sign in
location: attachment:20121218-LAB-array+ricorsione.txt of InformaticaCDLmatematica

Attachment '20121218-LAB-array+ricorsione.txt'

Download

   1 ESERCIZIO 1.
   2 ------------
   3 Si implementi in Java un metodo "void" RICORSIVO che, ricevuto un array di 
   4 interi, sia v, ed un intero, sia x, operi come illustrato di seguito. 
   5 Sostanzialmente, il metodo deve "saltellare", partendo dall'elemento in 
   6 posizione "x", da un elemento all'altro dell'array, fino a quando non accede ad 
   7 un elemento uguale a "-1". Ad ogni passo, se si trova nella posizione "k", 
   8 dovra' saltare nella posizione "v[k]". Prima di ogni salto, deve stampare su 
   9 standard output il valore contenuto nella posizione corrente. ESEMPIO: 
  10 
  11               -----------------------
  12 valore    :  | 2 | 4 | 3 | 5 |-1 | 1 |  <--- array "v"
  13               -----------------------
  14 posizione :    0   1   2   3   4   5    <--- indici nell'array "v"
  15 
  16 
  17 se il metodo fosse invocato con parametri il vettore "v" su illustrato ed il 
  18 valore intero x=2, il metodo dovrebbe produrre l'output seguente:
  19 
  20  x=2 -> v[2]=3
  21  x=3 -> v[3]=5
  22  x=5 -> v[5]=1
  23  x=1 -> v[1]=4
  24  x=4 -> v[4]=-1
  25 
  26 e poi fermarsi.
  27 
  28 BONUS: Invece che "void", si progetti il metodo come "int", e gli si faccia 
  29 restituire il numero di salti effettuati. Nell'esempio su riportato, dovrebbe 
  30 stampare: "Sono stati visitati 5 elementi, ed effettuati 4 salti."
  31 
  32 
  33 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  34 
  35 
  36 ESERCIZIO 2.
  37 ------------
  38 Si modifichi la soluzione proposta per l'esercizio 1 tenendo conto delle 
  39 seguenti considerazioni, INCREMENTALMENTE (quindi si devono realizzare 3 nuove 
  40 versioni del programma):
  41  1. le procedure di salto terminano non solo se si incontra -1, ma anche se si 
  42  incontra un numero che non puo' rappresentare un indice nell'array (quindi un 
  43  numero negativo o superiore a v.length-1)
  44  2. oltre che secondo quanto indicato al punto 1., le procedure di salto 
  45  terminano anche se il numero di salti supera ((v.length)^2).
  46  3. si noti che, in accordo a quanto descritto, possono esserci casi in cui il 
  47  metodo non smette mai di "saltare" da un punto all'altro, ripetendo piu' volte 
  48  salti gia' effettuati: il metodo deve essere in grado di CAPIRE se si trova in 
  49  una situazione come questa, comunicarlo all'utente e terminare.

Attached Files

You are not allowed to attach a file to this page.