E' proprio la parte in grassetto che non ho capito.Originariamente inviato da ybla82
....
- la funzione verifica se il primo elemento della lista è quello cercato.
- Se si ,restituisce la posizione, altrimenti tolglie il primo elemento dalla lista e chiama se stessa.
- Chiamando se stessa, viene fatta la stessa cosa, per cui viene verificato di nuovo se il primo elemento della lista è uguale a quello cercato ( in questo caso stiamo confrontando il secondo elemento della lista originale).
- Questo passaggio viene ripetuto fino a quando non è valida la condizione x == Fist(L). In questo caso si restituisce 1.
- Il valore restituito entrerà in "else y +1". Questo passaggio verrà eseguito tante volte quante sono le chiamate ricorsive effettuate. In questo modo otterrai la posizione dell'elemento cercato.
.....
Supponendo una lista {1-2-3-4-5}, in cui voglio cercare 3 ad esempio:
prendo il primo elemento della lista, lo confronto con 3 non è uguale. quindi tolgo il primo elemento della lista e passo al successivo (che è 2); di nuovo, 2 != 3 quindi scarto anche 2.
Quando però arrivo a 3=3 mi trovo nella condizione di x==First(L), quindi ho un return 1.
Bene, quel return 1 non mi fa finire l'esecuzione del programma resituendomi 1?
E' questo passaggio che non mi è chiaro.