• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 一個很有用的自定義函數(判斷自然數是否包含2的指定次冪)

    發表于:2007-05-25來源:作者:點擊數: 標簽:很有用的判斷自定義一個
    /* 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

    /*
               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 @varRet
    END


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>