将任意一个数解析为2的幂的和的方法
2007-11-30 20:01
106 查看
将任意一个数解析为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
如给定 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
相关文章推荐
- 把传过来的Object对象转换成Collection类型的对象。isArray()方法,判定此Class对象是否表示一个数组类。java.lang.reflect.Array 对任意数组进行操作
- 黑马程序员--Java基础加强--15.利用反射操作泛型IV【通过反射Method解析泛型方法思路】【通过Method对四种Type子接口类型进行解剖】【使用递归对任意复合泛型类型进行彻底解剖】【个人
- 简单编程(十三)编写一个方法用于求任意两个正整数的最大公约数
- 一个任意获得页面控件的方法
- 一个不错的JavaScript解析浏览器路径方法
- 使用泛型, 写一个为任意类型的动态数组添加元素的方法
- java 面试题 请设计一个方法,可以实现获取任意范围内的随机数
- 编写一个泛型方法,接收任意一个数组,并颠倒数组中的所以元素
- 一个不错的JavaScript解析浏览器路径方法(转)
- 利用Java的反射机制解析一个Class对象的详细内容(工具方法留用)
- 定义指针变量的方法编写任意一个数的阶乘
- ACEXML解析XML文件——我是如何学习并在短时间内掌握一个库的使用方法的
- python学习之获取当前时间的方法(可以任意取时间的任何一个对象显示)
- 获取国内任意一个城市的OpenStreetMap数据的一种方法
- [Happy DSA] 删除单链表中任意一个节点的方法
- 一个任意获得页面控件的方法
- C语言中数据类型的本质含义是:表示一个内存格子的长度和解析方法
- iOS开发:git命令返回任意一个版本的方法
- 一个非常全面的javascript URL解析函数和分段URL解析方法
- 控件类——如何给视图添加响应事件?(有一个方法及其解析)