----- 3/04/18 ----- > Vorrei ricevere chiarimenti sui loop in relazione al problema di Laboratorio > del 4/04/2018. > Non riesco infatti a capire perche' come risultato si ottenga sempre lo stesso > valore che la variabile ha all'inizio. > la parte commentata e' la versione ricorsiva del programma. > > public static StringSList btrSuccList (String btr, int k){ > > /* if (k == 0) { > return StringSList.NULL_STRINGLIST; > } else { > return btrSuccList(btrSucc(btr), k - 1).cons(btr); > } > */ > StringSList s = new StringSList(); > for (int i = 0; i == k ; i++) { > s = s.cons(btr); > btr = btrSucc(btr); > } > return s; > } ----- La condizione del costrutto "for" deve essere verificata affinche' ci possa essere una successiva iterazione. Nel caso specifico, per come l'hai formulata, le iterazioni procedono solo se i == k, cioe' al piu' in un caso: quando il valore di k e' 0 viene infatti effettuata una iterazione; quando e' diverso nessuna. Probabilmente intendevi invece ripetere il ciclo k volte e a tale scopo la formulazione corretta e': for ( int i = 0; i < k; i++ ) { ... } Ci sarebbe, comunque, un secondo problema: il programma iterativo costruirebbe la lista alla rovescia rispetto alla versione ricorsiva. ----- * -----