int fiboRek(int n) { switch (n) { case 0: return 0; case 1: return 1; default: return fiboRek(n-1) + fiboRek(n-2); } }
fiboRec(4) = fiboRek(3) + fiboRek(2) = (fiboRek(2) + fiboRek(1)) + (fiboRek(1) + fiboRek(0)) = ((fiboRek(1) + fiboRek(0)) + 1) + (1 + 0) = ((1 + 0) + 1) + 1 = (1 + 1) + 1 = 2 + 1 = 3
int fiboIt(int n) { switch (n) { case 0: return 0; case 1: return 1; } int letzter = 1; int vorletzter = 0; int neuer = 0; for (i=2; i<=n; i++) { neuer = letzter + vorletzter; vorletzter = letzter; letzter = neuer; } return neuer; }
vorletzter | letzter | neuer |
0 | 1 | 1 |
1 | 1 | 2 |
1 | 2 | 3 |
2 | 3 | 5 |