Di matematica non ne capisco molto ma se lo sviluppo di X^3=(X-1)^3+3*(X-1)^+3*X+1
in teoria vuol dire che X^3 lo ricavi da (X-1)^3, inoltre 0^3 = 0...se questo l'ho capito bene
allora l'algoritmo ricorsivo è esattamente quello del tuo prof. Il fatto di tutti quei calcoli è che non puoi usare la moltiplicazione ma solo la somma...quindi 3*(x-1)+1=3x-3=x+x+x-2.
In pratica per 3^3 succederebbe:
- x non è zero quindi faccio cubo(2)+....
- quindi richiamo cubo(2)
- x non è zero quindi faccio cubo(1)+...
- quindi richiamo cubo(1)
- x non è zero quindi faccio cubo(0)+...
- quindi richiamo cubo(0)
- ora x è zero quindi ritorno zero a chi mi ha chiamato cioè cubo(1)
- continuo quello che avevo interrotto in cubo(1) cioè il calcolo cubo(1)+... usando però
il valore di ritorno di cubo(0) che era zero, poi restituisco il calcolo con la return a cubo(2)
- e così via fino a ritornare dalla funzione con il calcolo di 3^3.