javaee论坛

普通会员

225648

帖子

346

回复

360

积分

楼主
发表于 2019-10-30 09:48:56 | 查看: 300 | 回复: 0

斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。(更多资料:斐波那契数列)

--斐波那契数列(0,1,1,2,5,8,13,21,34,55,89……)--数据库类型长度有限,最大输出到94个。嵌套查询只32个。--【1.第N个斐波那契数列】CREATEFUNCTIONdbo.fib(@nINT)RETURNSINTASBEGINDECLARE@returnINTIF@n=0SELECT@return=0ELSEIF@n=1SELECT@return=1ELSEIF@n>1SELECT@return=(dbo.fib(@n-2)+dbo.fib(@n-1))RETURN@return;ENDPRINT'超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为32)'SELECTdbo.fib(32)ASfib/*fib---2178309*/--【2.前N个斐波那契数列】CREATEFUNCTIONdbo.fib_col(@nINT)--n:1~92RETURNS@resultTABLE(fibBIGINT)--decimal(37,0):10^38-1,可显示94个ASBEGINDECLARE@kINT=1DECLARE@aBIGINT=0DECLARE@bBIGINT=1DECLARE@fibBIGINT=0IF@n=1BEGININSERTINTO@resultSELECT0SET@k=@k+1ENDELSEIF@n>=2AND@n<=92BEGININSERTINTO@resultVALUES(0),(1)SET@k=@k+1ENDELSERETURN--bigint范围:2^63-1(9,223,372,036,854,775,807)WHILE@fib<9223372036854775807BEGINSET@k=@k+1SET@fib=@a+@bSET@a=@bSET@b=@fibIF@k>@nRETURNINSERTINTO@resultSELECT@fibENDRETURNENDSELECT*FROMdbo.fib_col(10)/*fib---0112358132134*/--【3.前N个斐波那契数列】CREATEFUNCTIONdbo.fib_row(@nINT)--n:1~92RETURNSvarchar(max)ASBEGINDECLARE@kINT=1DECLARE@aBIGINT=0DECLARE@bBIGINT=1DECLARE@fibBIGINT=0DECLARE@resultvarchar(max)=''IF@n=1BEGINSET@result=ISNULL(@result,'')+'0'SET@k=@k+1ENDELSEIF@n>=2AND@n<=92BEGINSET@result=ISNULL(@result,'')+'0,1'SET@k=@k+1ENDELSERETURN@result--bigint范围:2^63-1(9,223,372,036,854,775,807)WHILE@fib<9223372036854775807BEGINSET@k=@k+1SET@fib=@a+@bSET@a=@bSET@b=@fibIF@k>@nRETURN@resultSET@result=@result+','+CONVERT(VARCHAR(50),@fib)ENDRETURN@resultENDSELECTdbo.fib_row(20)ASfib/*fib---------------------------------------------------------------0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181*/--【4.所有可输出的斐波那契数列】;WITHFib(a,b)AS(SELECTa,bFROM(VALUES(CONVERT(BIGINT,0),CONVERT(BIGINT,1)))AST(a,b)UNIONALLSELECTb,a+bFROMFibWHEREa<9223372036854775807/2)SELECTaFROMFIB/*a---0112…………28800671943708161204660046610375530309*/


您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017