Hva er ineffektivt med funksjonen som står i filen under? Hvordan kan den forbedres?

fib.m
function retur = fib(n)
    retur = [0, 1];
    for i = 3:n
        retur(i) = retur(i-1) + retur(i-2);
    end
    retur = retur(1:n);
end 

Videoforklaring (8:21)

Svar

Listen retur vokser med ett element for hver iterasjon i løkken. Det fører til mye kopiering av data. Den forbedres hvis man før for-løkken binder retur til en vektor med plass til alle elementene som skal produseres.
  • No labels