Primeiro apresente o problema clássico do algoritmo de Fibonacci:
Escreva uma função, digite n para encontrar o enésimo termo da sequência de Fibonacci. A definição da sequência de Fibonacci é a seguinte:
F (0) = 0, F (1) = 1
F (N) = F (N-1) + F (N-2), onde N> 1. A
sequência de Fibonacci começa com 0 e 1, e o seguinte O número de Fibonacci é obtido somando os dois números anteriores.
1. Recursão
Recursão é chamar a si mesmo, o que consome muito tempo e espaço. A maioria dos sites de limpeza de problemas não suporta o uso de recursão no problema de Fibonacci.
var fib = function(n) {
if(n<2) return n
return fib(n-1)+fib(n-2)
};
2. Programação dinâmica
A programação dinâmica pode ser entendida como etapas de salto de rã. Não importa quantas etapas sejam realizadas, as etapas de destino final são as mesmas, mas podem haver vários processos. A essência é o espaço para o tempo. Você pode ver que o método a seguir consome espaço de matriz n + 1
function fib(n){
var arr=[0,1]
for(let i=2;i<=n;i++){
arr[i]=arr[i-1]+arr[i-2]
}
return arr[n]
}
3. Iteração
Iteração é o processo de usar continuamente o valor antigo da variável para enviar o novo valor. Simplificando, a variável ainda é essa variável, ou seja, o valor está mudando constantemente. Entenda a iteração no projeto normal, ou no projeto, mas a função está mudando e melhorando constantemente. Cada vez mais perto dos requisitos finais. Você pode ver que o método a seguir muda constantemente os valores de primeiro, segundo e soma.
var fib = function(n) {
if(n<=1) return n;
var first=0,second=1;
for(var i=2;i<=n;i++){
var sum = first+second
first=second;
second=sum;
}
return sum;
};