Ecco un esempio di codice CHE FUNZIONA PER SBAGLIO
Da quello che so l'ultima chiamata della funzione somma (quando b=0) non facendo nulla dovrebbe restituire "1"
Sai MOOOOLTO MALE
MAI FIDARTI di quello che sai, perche' DI SICURO non lo sai
Usa SEMPRE nomi di funzioni COMPRENSIBILI, il che vuol dire SEMPRE parole complete di senso compiuto.
Non e' questo il momento di pensare alle ottimizzazioni (se la funzione ha un nome piu' breve il mio codice viene eseguito piu' velocemente: BALLE )
Se usi "suc" ("successivo" ) allora usa anche "prec" ("precedente") e NON "b-1"
Ogni FUNZIONE DEVE SEMPRE (ma SEMPRE SEMPRE, fino alla fine del tempo )) uscire mediante un return.
TU NON SAI (e non puoi saperlo, ma non lo sa nemmeno uno che ha N-milioni di anni di esperienza) che cosa la funzione puo' ritornare SE NON ESCE DA UN RETURN in cui c'e' ESPLICITAMENTE DETTO che cosa deve ritornare.
QUINDI, riassumento,
1) il primo codice che hai postato E' TOTALMENTE CANNATO ANCHE SE SEMBRA, per un'improbabile volonta' divina, funzionare. FUNZIONA PER UN CUL...O GRANDE COME L'INTERO PIANETA
2) il secondo codice, ha un che di giusto, MA MANCANO PEZZI FONDAMENTALI
Idea buona, implementazione sbagliata
RICORDA:
CI DEVE ESSERE SEMPRE la base della ricorsione, e ad ogni chiamata ricorsiva il lavoro di fare DEVE ESSERE MENO di quello DEL PASSO PRECEDENTE.
Ritenta, sarai piu' fortunato la prossima volta