求某數為幾個2的N次方組成的函式 遞迴法,迴圈法

2021-05-01 20:19:23 字數 855 閱讀 2019

--遞迴法

create function f_getnum(@i int)

returns @t table(r int)

asbegin

declare @n int   

set @n = 1

while 2*@n<=@i

begin

set @n = @n * 2

endinsert @t select @n

set @n = @i - @n

if @n > 0

insert @t select r from f_getnum(@n)

return;

endgo

select * from f_getnum(10)

--迴圈法

alter function f_getnum (@i int)

returns @t table(r int)

asbegin

declare @n int

while @i > 0

begin

set @n = 1

while 2*@n<=@i

begin

set @n = @n * 2

endinsert @t select @n

set @i = @i - @n

endreturn;

endgo

select * from f_getnum(10)

r-----------82

(2 行受影響)

求最接近數n的2的次方數

我們當然可以直接暴力求解 負次方不考慮 int findtablesizeof2 const int target else 可能出現target是兩者的平均值,就暫且返回大值吧 return temp2power 2 target target temp2power temp2power 2 te...

9112 求2的n次方的精確值

time limit 1 second memory limit 2 mb 問題描述 求2 n的精確值。n由使用者輸入,0 n 3232。輸入只有一行,乙個正整數n。輸出為計算的結果,最後用回車結束。8256 換行 題解 這是個單精度乘高精度的問題,每次在做乘方的時候,把當前算出的結果的每一位都乘上...

判斷乙個數是否為2的N次方

package aboutmove 判斷是否為2的次方 public class aboutmove return false public static void main string args 注意點千萬不能在第15行寫成n 1 因為6 2 3 3 2 1這是整形 時間複雜度為o logn 演...