js 实现2的n次方计算函数_求某数为几个2的N次方组成的函数(递归法,循环法)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-29 20:09   31   0

--递归法

create function f_getnum(@i int)

returns @t table(r int)

as

begin

declare @n int

set @n = 1

while 2*@n<=@i

begin

set @n = @n * 2

end

insert @t select @n

set @n = @i - @n

if @n > 0

insert @t select r from f_getnum(@n)

return;

end

go

select * from f_getnum(10)

--循环法

alter function f_getnum (@i int)

returns @t table(r int)

as

begin

declare @n int

while @i > 0

begin

set @n = 1

while 2*@n<=@i

begin

set @n = @n * 2

end

insert @t select @n

set @i = @i - @n

end

return;

end

go

select * from f_getnum(10)

/*

r

-----------

8

2

(2 行受影响)

*/

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP