Original post: http://anothermysqldba.blogspot.com/2015/06/fibonacci-sequence-procedure.html
Bem, tem sido um tempo desde que eu postei, desculpe por isso. Hoje eu estava assistindo a reprises do programa de TV Fringe e quando Walter referenciado a seqüência de Fibonacci eu tenho lado seguido com opções do MySQL para isso.
Agora este post já existia:
Então eu peguei esse post e ampliou um pouco, o resultado é um procedimento que você pode ligar e voltar a gama dentro da sequência de Fibonacci que você está depois.
O procedimento é abaixo:
Você pode chamar isso e passar quaisquer valores e varia você está depois.
Então, se você quiser que o valor 5 (a partir de 0) na seqüência eo próximo valor
Então, se você quiser que o valor 30 (a partir de 0) na seqüência eo próximo valor
Então, se você quiser que o valor 150 (a partir de 0) na seqüência eo próximo valor
Então você começa a idéia. Agora você também pode expandir a gama de resultados se você quer mais do que apenas 2 mudar o segundo valor na chamada de procedimento.
De qualquer forma, espero que alguém acha útil e de crédito para a base de consulta não ir para o post original.
Bem, tem sido um tempo desde que eu postei, desculpe por isso. Hoje eu estava assistindo a reprises do programa de TV Fringe e quando Walter referenciado a seqüência de Fibonacci eu tenho lado seguido com opções do MySQL para isso.
Agora este post já existia:
Então eu peguei esse post e ampliou um pouco, o resultado é um procedimento que você pode ligar e voltar a gama dentro da sequência de Fibonacci que você está depois.
O procedimento é abaixo:
delimiter //
CREATE PROCEDURE `Fibonacci`(IN POS INT, IN RANG INT, IN LIMTED INT)
BEGIN
select FORMAT(Fibonacci,0) AS Fibonacci from (
select @f0 Fibonacci, @fn:=@f1+@f0, @f0:=@f1, @f1:=@fn
from (select @f0:=0, @f1:=1, @fn:=1) x,
information_schema.STATISTICS p limit LIMTED) y LIMIT POS, RANG;
END//
delimiter ;
Você pode chamar isso e passar quaisquer valores e varia você está depois.
Então, se você quiser que o valor 5 (a partir de 0) na seqüência eo próximo valor
> CALL Fibonacci(5,2,100);
+-----------+
| Fibonacci |
+-----------+
| 5 |
| 8 |
+-----------+
Então, se você quiser que o valor 30 (a partir de 0) na seqüência eo próximo valor
> CALL Fibonacci(30,2,100);
+-----------+
| Fibonacci |
+-----------+
| 832,040 |
| 1,346,269 |
+-----------+
Então, se você quiser que o valor 150 (a partir de 0) na seqüência eo próximo valor
> CALL Fibonacci(150,2,1000);
+--------------------------------------------+
| Fibonacci |
+--------------------------------------------+
| 9,969,216,677,189,305,000,000,000,000,000 |
| 16,130,531,424,904,583,000,000,000,000,000 |
+--------------------------------------------+
Então você começa a idéia. Agora você também pode expandir a gama de resultados se você quer mais do que apenas 2 mudar o segundo valor na chamada de procedimento.
> CALL Fibonacci(0,10,100);
+-----------+
| Fibonacci |
+-----------+
| 0 |
| 1 |
| 1 |
| 2 |
| 3 |
| 5 |
| 8 |
| 13 |
| 21 |
| 34 |
+-----------+
> CALL Fibonacci(30,5,100);
+-----------+
| Fibonacci |
+-----------+
| 832,040 |
| 1,346,269 |
| 2,178,309 |
| 3,524,578 |
| 5,702,887 |
+-----------+
De qualquer forma, espero que alguém acha útil e de crédito para a base de consulta não ir para o post original.