Si consideri il seguente frammento di programma:
int succ(int i) { if(i <= 2) return(1); else return(3*succ(i-1)+2*succ(i-2)-succ(i-3)); } main() { printf("num=%d\n", succ(7)); }Cosa viene visualizzato a video dall'esecuzione di main()?
Soluzione: 559
Osserva
- succ(0) = 1
- succ(1) = 1
- succ(2) = 1
- succ(3) = 3*succ(2)+2*succ(1)-succ(0) = 3*1 +2*1-1 = 4
- succ(4) = 3*succ(3)+2*succ(2)-succ(1) = 3*4 +2*1-1 = 12+2-1 = 13
- succ(5) = 3*succ(4)+2*succ(3)-succ(2) = 3*13 +2*4-1 = 39+8-1 = 46
- succ(6) = 3*succ(5)+2*succ(4)-succ(3) = 3*46 +2*13-4 = 138+26-4 = 160
- succ(7) = 3*succ(6)+2*succ(5)-succ(4) = 3*160+2*46-13 = 480+92-13 = 559