一个很有用的自定义函数(判断自然数是否包含2的指定次幂)

函数

/*           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

时间: 2024-12-04 10:31:14

一个很有用的自定义函数(判断自然数是否包含2的指定次幂)的相关文章

JavaScript基于自定义函数判断变量类型的实现方法_javascript技巧

本文实例讲述了JavaScript基于自定义函数判断变量类型的实现方法.分享给大家供大家参考,具体如下: 通常用typeof来判断js变量的类型,但很多时候仅仅typeof满足不了要求的. 我写了一个自定义函数来做这个事,判断的比较全面了. function varType(v){ if ( typeof v=== "object" ){ if (v=== null ) return 'null' ; if (v. constructor ) return (v. constructo

很有用的php函数

函数 很有用的一些函数,你可以作为源码保存,然后以后避免重复编写. 文件读取函式    //文件读取函式   function PHP_Read($file_name) {    $fd=fopen($file_name,r);   while($bufline=fgets($fd, 4096)){    $buf.=$bufline;    }   fclose($fd);   return $buf;    }   ?> 文件写入函式     //文件写入函式   function PHP_

postgresql-求大神把PostgreSQL 一个存储过程转变为自定义函数

问题描述 求大神把PostgreSQL 一个存储过程转变为自定义函数 存储过程如下: create procedure calcGPAbySno ( @vsno char(10), @avg_gpa decimal(10,2) out ) as declare @gpa decimal(10,1); declare @vcredit int; declare @vgrade int; declare @sum_credit int; declare @sum_gpa decimal(10,1);

C++自定义函数判断某年某月某日是这一年中第几天_C 语言

本文实例讲述了C++自定义函数判断某年某月某日是这一年中第几天的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 30 日 * 版 本 号:v1.0 * * 输入描述: * 问题描述:编写函数判断某年某月某日这一年中是第几天,在主函数中调用该函数. * 程序输出: * 问题分析:略 * 算法设计:略 */ #include<iostream> using namespace std; int main() { void f(int yea

thinkphp模板之变量输出 自定义函数 判断语句

模板操作变量输出 快捷输出变量    代码如下 复制代码 {:function(-)} //执行方法并输出返回值 {~function} //执行方法不输出 {@var} //输出Session变量 {#var} //输出Cookie变量 {&var} //输出配置参数  {%var} //输出语言变量 {.var} //输出GET变量 {^var} //输出POST变量 {*var} //输出常量  模版输出 //1 直接调用index操作模板 $this->display(); // 对

WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]

在<上篇>中,我通过使用Delegate的方式解决了服务调用过程中的异常处理以及对服务代理的关闭.对于<WCF技术剖析(卷1)>的读者,应该会知道在第7章中我通过类似于AOP的方式解决了相似的问题,现在我们来讨论这个解决方案. 通过<服务代理不能得到及时关闭会有什么后果?>的介绍,我们知道了及时关闭服务代理的重要意义,并且给出了正确的编程方式.如果严格按照上面的编程方式,就意味着对于每一个服务调用,都要使用相同的代码进行异常处理和关闭或中断服务代理对象.按照我个人的观点

几个很有用的javascript函数

javascript|函数 函数Reset()按Reset按钮后对各字段的内容复位. 函数submitForms()按submit按钮后对字段合法性检查后发送电子邮件. 函数isName()对姓名字段进行合法性检查. 函数isEmail()对电子邮件地址字段进行合法性检查. 函数isBrowser()对浏览器字段与自动检测的浏览器版本进行比较. 函数isCountry()对国家字段进行合法性检查. 函数isComment()对意见字段进行合法性检查,不允许为空值. 函数isFavorite()对

Javascript自定义函数判断网站访问类型是PC还是移动终端

 如果,能够判断出访问Web网页的类型(PC还是移动终端).就可以解决许多绚丽多彩的 Flash效果出不来的问题 由于很多移动终端不支持 Flash,因此 许多绚丽多彩的 Flash效果出不来.如果,能够判断出访问Web网页的类型(PC还是移动终端).就可以对症下药,找出解决的办法!    访问的类型为移动终端我们就用.gif代替Flash(.swf后缀)动画,PC端就不做改变.这样就比较完美了!    如下所示,函数 flashChecker() 就是用来检测访问的类型.  代码如下: <sc

Javascript自定义函数判断网站访问类型是PC还是移动终端_javascript技巧

由于很多移动终端不支持 Flash,因此 许多绚丽多彩的 Flash效果出不来.如果,能够判断出访问Web网页的类型(PC还是移动终端).就可以对症下药,找出解决的办法! 访问的类型为移动终端我们就用.gif代替Flash(.swf后缀)动画,PC端就不做改变.这样就比较完美了! 如下所示,函数 flashChecker() 就是用来检测访问的类型. 复制代码 代码如下: <script language="javascript" type="text/javascri