Immagina un'esecuzione con 3 e 7... la sequenza di chiamate nel tuo programma iniziale è

somma(3,7) =
som + somma(4,7) = // som è uguale a 0
som + somma(5,7) = // som è uguale a 0
...
som (7,7) = 7

mentre nella versione modificata diventa

somma(3,7) =
som + somma(4,7) = // som è uguale a 3
3 + som + somma(5,7) = // som è uguale a 4
...
3 + 4 + 5 + 6 + somma(7,7) =
3 + 4 + 5 + 6 + 7

capito?