“Seja n 0. O número de Fibonacci para 0 é:
0
Seja n 1. O número de Fibonacci para 1 é:
1
Seja n 2. O número de Fibonacci para 2 é:
1 + 0 = 1
Seja n 3. O número de Fibonacci para 3 é:
1 + 1 = 2
Seja n 4. O número de Fibonacci para 4 é:
2 + 1 = 3
Seja N 5. O número de Fibonacci para 5 é:
3 + 2 = 5
Seja n 6. O número de Fibonacci para 6 é:
5 + 3 = 8
Seja n 7. O número de Fibonacci para 7 é:
8 + 5 = 13
Seja n 8. O número de Fibonacci para 8 é:
13 + 8 = 21
Seja N 9. O número de Fibonacci para 9 é:
21 + 13 = 34
A tabela a seguir mostra os primeiros doze números de Fibonacci:
0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 | 55 | 89 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
A primeira linha dá os números de Fibonacci. A segunda linha fornece os índices baseados em zero para a matriz correspondente. Esses índices são os diferentes inteiros N, começando de zero. Pode ser visto da tabela que o décimo número de Fibonacci é 34 + 21 = 55. Além disso, o primeiro número de Fibonacci é, 55 + 34 = 89 .
O objetivo deste artigo é produzir um número de fibonacci no tempo O (n) e em tempo constante o (1), usando a linguagem do computador C.
Os números de fibonacci são inteiros, começando de 0.”
A fórmula para um número de fibonacci
Como visto na tabela acima, o número atual de fibonacci é a soma dos dois números anteriores. O número de fibonacci para 0 é 0, e o número de fibonacci para 1 é 1. Esses dois primeiros números, em sua ordem, devem ser aceitos como tal. Desenvolvendo os seguintes números de Fibonacci, comece a partir daí, para dar 1 + 0 = 1; 1 + 1 = 2; 2 + 1 = 3, etc.
A fórmula para um determinado número de fibonacci pode ser fornecido em três linhas ou uma linha. A fórmula em três linhas é dada da seguinte forma:
Esta fórmula é a definição de um número de fibonacci.
Produzindo números de fibonacci no tempo O (n)
Mais de um número de fibonacci pode ser produzido a partir de zero para um determinado valor de n. Nesse caso, n é o maior índice mais 1 para a matriz - assuma a indexação baseada em zero. O número de fibonacci para i = 0 é produzido (i.e 0). O número de fibonacci para i = 1 é então produzido (i.e., 1). O número de fibonacci para i = 2 é produzido em seguida (i.e., 1 novamente). O número de fibonacci para i = 3 é então produzido (i.e., 2). O número de fibonacci para i = 4 é então produzido (i.e., 3). Isso continua até que o número de Fibonacci para o número fornecido (índice) de n, digamos 12, para o maior índice de 11, seja produzido (89).
Um programa C que retira a entrada do teclado e o produz para o terminal (tela) começa com:
#incluir
Com esta diretiva de pré-processamento, o texto digitado no teclado aparecerá na tela. A saída do programa também aparecerá na tela. A função Fibonacci é:
void fibonacci (int a [], int n)
se (n> 0)
A [0] = 0;
se (n> 1)
A [1] = 1;
para (int i = 2; iint nextno = a [i - 1] + a [i - 2];
A [i] = nextno;
As duas primeiras declarações da função são consideradas como duas operações. O corpo do loop for considerado como uma operação. Se n é 12, então o corpo do loop for 10 vezes porque a primeira e a segunda operações, para o índice e o índice 1, já ocorreram. Isso dá uma complexidade de tempo de O (12), escrita como O (n).
Observe a declaração:
int nextno = a [i - 1] + a [i - 2];
No corpo do loop for. Ele adiciona os dois números de Fibonacci anteriores para obter o número atual de Fibonacci (Nextno).
Uma função principal C adequada para o programa acima é:
int main (int argc, char ** argv)
int n = 12;
int arr [12];
Fibonacci (arr, n);
para (int i = 0; iprintf ("%i", arr [i]);
printf ("\ n");
retornar 0;
Produzindo um número de fibonacci em tempo constante
Acima, o índice para o número de Fibonacci, 89, é 11, e não 12, para indexação baseada em zero. Seja 11 n. Nesse caso, o número atual de Fibonacci é 89. Se n for 10, o número atual de fibonacci seria 55. Se n for 9, o número atual de fibonacci seria 34. Isso continua para baixo até que n for 0, o número de fibonacci seria 0.
Existe uma fórmula matemática para obter o número atual de fibonacci, dado o índice baseado em zero (número), com o nome da variável n. A fórmula é:
Observe que, no lado direito da equação, não é a raiz quadrada de 5 que é elevada ao poder n; É a expressão entre parênteses que é elevada ao poder n. Existem duas dessas expressões.
Então, quando n é 0, fibn será 0. Quando n é 1, fibn será 1. Quando n é 2, fibn será 1. Quando n é 3, fibn será 2 - e assim por diante.
Essa função matemática é uma operação principal e retorna apenas um número de Fibonacci e não uma sequência de números correspondentes a, digamos, índice 0 ao índice 11. Este é um código de tempo constante. Ainda pode ser usado para produzir uma sequência de números de Fibonacci, apenas chamando -o repetidamente com diferentes valores de n, como índices, em um programa.
A complexidade do tempo para essa função matemática para produzir seu número de fibonacci é O (1), tempo constante.
Agora, essa função matemática é codificada abaixo para produzir 12 números de Fibonacci. Usaria menos tempo total do que o algoritmo anterior.
O código para esta função matemática para produzir seu número de fibonacci é:
#incluir
#incluir
Fibno duplo (int n)
fibn duplo = (pow ((1+sqrt (5))/2, n) - pow ((1 -sqrt (5))/2, n))/sqrt (5);
retornar fibn;
Observe que a matemática.A biblioteca H está incluída desta vez, que traz funções predefinidas do poder (POW) e da raiz quadrada (SQRT) para o programa. A função produz apenas um número de fibonacci e não uma sequência deles. Uma função principal adequada para este código é:
int main (int argc, char ** argv)
int n = 11;
duplo fibn = fibno (n);
printf ("%lf \ n", fibn);
retornar 0;
Com um índice de 11, a saída é 89.000000. No entanto, para executar este programa com o compilador GCC, use uma linha de comando como:
GCC Temp.c -o temp -lm
onde “Temp.C ”é o código -fonte e“ Temp ”é o programa compilado. Observe o uso do interruptor, "-lm", onde "l" é minúsculo l.
Conclusão
O primeiro número de fibonacci é 0. O segundo número de fibonacci é 1. O resto é obtido adicionando os dois números anteriores de Fibonacci. Os números de Fibonacci são inteiros. Para obter a sequência de números de Fibonacci de zero no tempo O (n), use uma função com uma declaração como:
int nextno = a [i - 1] + a [i - 2];
Onde Nextno é o número atual do índice I, e "A" é a matriz para segurar os números de sequência de Fibonacci. Os dois primeiros números, 0 e 1, são produzidos de forma independente.
Para obter apenas um número de Fibonacci no tempo O (1), use a fórmula matemática:
onde n é o índice baseado em zero.
Os números de fibonacci podem ser obtidos usando matrizes matemáticas. No entanto, esta é uma discussão para algum outro momento.