欢迎光临
我们一直在努力

一个很有用的自定义函数(判断自然数是否包含2的指定次幂)-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

/*           name :    fun_wheincluded           function :   判断选定的数字是否在给定的整数中           可以知道任何一个自然数都可以拆分成若干个2的幂的和,如:                1 = 2^0                2 = 2^1                3 = 2^0 + 2^1                4 = 2^2                5 = 2^0 + 2^2                6 = 2^1 + 2^4                7 = 2^0 + 2^1 + 2^2                8 = 2^3                9 = 2^0 + 2^3                10 = 2^1 + 2^3                11 = 2^0 + 2^1 + 2^3                12 = 2^2 + 2^3                13 = 2^0 + 2^2 + 2^3                14 = 2^1 + 2^2 + 2^3                15 = 2^0 + 2^1 + 2^2 + 2^3                16 = 2^4                17 = 2^0 + 2^4         将任意一个数解析为2的幂的和的方法——递归    规律:                如给定 14                  ∵ 2^3 < 14 < 2^4                  ∴ 14中必有8——2^3                  14 – 8 = 6                  ∵ 2^2 < 6 < 2^3                  ∴ 6中必有4——2^2                  6 – 4 = 2                         ∵ 2 = 2                  ∴ 14 = 2^3 + 2^2 + 2^1

            parameters :  @totalnum           type:   int           @specifiednum             type:   int            steps :                author :   waxdoll cheung            date :    2005-03-21*/

create function  dbo.fun_wheincluded (  @totalnum int,   @specifiednum int )returns bit as  begin

 declare @varret bit

 declare @varloop int

 set @varloop = 0

 while (@totalnum >= cast(power(2, @varloop) as int))  set @varloop = @varloop + 1

 set @totalnum = @totalnum – cast(power(2, @varloop – 1) as int)

 if (@varloop = @specifiednum + 1)  set @varret = 1 else begin  if (@totalnum >= 1)   return dbo.fun_wheincluded(@totalnum, @specifiednum)  else   set @varret = 0 end

 return @varretend

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个很有用的自定义函数(判断自然数是否包含2的指定次幂)-数据库专栏,SQL Server
分享到: 更多 (0)

相关推荐

  • 暂无文章