2015年6月29日星期一

斐波那契序列步驟

Original post: http://anothermysqldba.blogspot.com/2015/06/fibonacci-sequence-procedure.html
 
那麼它已經一段時間,因為我張貼,抱歉。 今天,我在看電視節​​目邊緣的重播,當沃爾特引用的斐波那契數列我得到了側履帶與MySQL選項這一點。 

現在這個職位已經存在: 

所以我把這個職位,並擴展了它一點點,結果是,你可以調用和斐波那契數列,你是在後返回範圍的過程。 

該過程如下: 

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 ; 


您可以致電此並傳遞任何值和範圍後,你是。 

所以,如果你想第5值序列和下一個值( 從0開始  

> CALL Fibonacci(5,2,100); 
+-----------+ 
| Fibonacci | 
+-----------+ 
| 5 | 
| 8 | 
+-----------+ 


所以,如果你想在30號值序列和下一個值( 從0開始  

> CALL Fibonacci(30,2,100); 
+-----------+ 
| Fibonacci | 
+-----------+ 
| 832,040 | 
| 1,346,269 | 
+-----------+ 


所以,如果你想150價值序列和下一個值( 從0開始  

> 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 | 
+--------------------------------------------+ 


所以,你的想法。 現在,您也可以擴大戰果的範圍內,如果你想超過2只更改過程調用的第二個值。 

> 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 | 
+-----------+ 


無論如何,希望有人發現它有用和信用查詢的基礎確實去了原來的職位。