Advertisement
jacknpoe

Fibonacci (por extenso)

Jun 1st, 2016
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.13 KB | None | 0 0
  1. #
  2. # Mostra os primeiros <num_sequencia> números da sequência de Fibonacci,
  3. # omitindo (<omitir_0>) ou não o zero inicial
  4. # O código não foi otimizado para ficar de fácil compreensão
  5. #
  6.  
  7. ###### DELIMITADOR PARA O BANCO DE DADOS INCLUIR A PROCEDURE CORRETAMENTE
  8. DELIMITER |
  9. CREATE OR REPLACE FUNCTION Fibonacci( num_sequencia INT, omitir_0 BOOLEAN) RETURNS VARCHAR( 512) DETERMINISTIC NO SQL
  10. BEGIN
  11.     DECLARE primeiro INT DEFAULT 0;
  12.     DECLARE segundo INT DEFAULT 1;
  13.     DECLARE temporario INT DEFAULT 0;
  14.     DECLARE contador INT DEFAULT 0;
  15.     DECLARE acumulador VARCHAR( 512) DEFAULT "";
  16.  
  17.     IF omitir_0 THEN
  18.         SET primeiro = 1;
  19.     END IF;
  20.  
  21.     IF num_sequencia > 0 THEN
  22.         SET acumulador = cast( primeiro AS CHAR);
  23.     END IF;
  24.  
  25.     IF num_sequencia > 1 THEN
  26.         SET acumulador = concat( acumulador, ' / ', segundo);
  27.     END IF;
  28.  
  29.     IF num_sequencia > 2 THEN
  30.         REPEAT
  31.             SET temporario = segundo;
  32.             SET segundo = segundo + primeiro;
  33.             SET primeiro := temporario;
  34.  
  35.             SET acumulador = concat( acumulador, ' / ', segundo);      
  36.  
  37.             SET contador := contador + 1;
  38.         UNTIL contador = num_sequencia - 2 END REPEAT;
  39.     END IF;
  40.  
  41.     RETURN acumulador;
  42. END |
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement