19/02/15 18:11
darioza
allora...
innanzi tutto ti rispolvero la teoria, perchè mi sa che ti sono ostiche le ricorsive (non preoccuparti, dopo tanto tempo anche a me sono rimaste sulle scatole, ma per altri motivi...)
Una funzione ricorsiva è una funzione che richiama sé stessa (ricorsione diretta) o richiama una funzione che a sua volta la richiama (ricorsione indiretta). avendo il processo fine prima o poi è necessario che la catena si interrompa e che quindi si verifichino 2 "proprietà" (speriamo non mi legga nessuno troppo sensibile alla teoria )
1) Debbono esistere dei valori per cui la funzione non attivi la ricorsione
2) Ogni volta che la funzione lavora, i valori di cui al punto 1, devono essere piu vicini
ti posto un esempio che ho trovato in giro, per capirci:
int calcFatt(int numero){
int f;
if (!numero) /*3*/
f=1;
else
f=numero*calcFatt(numero-1); /*4*/
return f;
}
Detto cio, a me sono sempre state sulle balle le ricorsioni.
quello che devi fare te è come nell'esempio, appoggiarti ad una variabile incrementale, e richiamare la funzione su la nuova variabile incrementata, che corrisponde all'indice dell'array_data che hai creato.
in ogni "giro" della ricorsiva, controlli che prodotto è in quell'indice, e se corrisponde a quello richiesto, aggiungi +1 ad una seconda variabile d'appoggio.
Quando arrivi all'ubound dell'array, interrompi la ricorsione e stampi il numero d'appoggio (il secondo che abbiamo creato)
Tutto chiaro?
(Ho mal di testa stasera, spero non aver dimenticato nulla ed essere stato chiaro)
innanzi tutto ti rispolvero la teoria, perchè mi sa che ti sono ostiche le ricorsive (non preoccuparti, dopo tanto tempo anche a me sono rimaste sulle scatole, ma per altri motivi...)
Una funzione ricorsiva è una funzione che richiama sé stessa (ricorsione diretta) o richiama una funzione che a sua volta la richiama (ricorsione indiretta). avendo il processo fine prima o poi è necessario che la catena si interrompa e che quindi si verifichino 2 "proprietà" (speriamo non mi legga nessuno troppo sensibile alla teoria )
1) Debbono esistere dei valori per cui la funzione non attivi la ricorsione
2) Ogni volta che la funzione lavora, i valori di cui al punto 1, devono essere piu vicini
ti posto un esempio che ho trovato in giro, per capirci:
int calcFatt(int numero){
int f;
if (!numero) /*3*/
f=1;
else
f=numero*calcFatt(numero-1); /*4*/
return f;
}
Detto cio, a me sono sempre state sulle balle le ricorsioni.
quello che devi fare te è come nell'esempio, appoggiarti ad una variabile incrementale, e richiamare la funzione su la nuova variabile incrementata, che corrisponde all'indice dell'array_data che hai creato.
in ogni "giro" della ricorsiva, controlli che prodotto è in quell'indice, e se corrisponde a quello richiesto, aggiungi +1 ad una seconda variabile d'appoggio.
Quando arrivi all'ubound dell'array, interrompi la ricorsione e stampi il numero d'appoggio (il secondo che abbiamo creato)
Tutto chiaro?
(Ho mal di testa stasera, spero non aver dimenticato nulla ed essere stato chiaro)
aaa