主题:[原创]本人各位递归问题的专家讨教讨教!
网络爱好者
[专家分:60] 发布于 2006-10-23 14:56:00
[em18]求2的冥次方。
回复列表 (共1个回复)
沙发
mickeyice [专家分:200] 发布于 2006-10-23 22:18:00
input n
ad=2:count=1:sum=1
while n<>0
if count*2<n then
ad=ad*ad:count=count*2
else
sum=sum*ad:n=n-count:ad=2:count=1
end if
wend
? sum
end.
==============================================================
当n 比较大的时候 把 n 拆开来算
例
n=199时
count=1 2 4 8 16 32 64 128 (用2^2*2^2 来计算 2^4 依次类推)
count*2>n
n=n-count
n=199-128=71
count= 1 2 4 8 16 32 64
count*2>n
n=n-count
n= 71-64=5
count=1 2 4
n=1
count*2>n
n=1-1=0
计算结束
n=2^128*2^64*2^4
大概求幂用了15次运算
这个是 比较直观的递归
各位哥哥有啥 更好的算法么
我来回复