回 帖 发 新 帖 刷新版面

主题:[原创]本人各位递归问题的专家讨教讨教!

[em18]求2的冥次方。

回复列表 (共1个回复)

沙发

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次运算

这个是 比较直观的递归
各位哥哥有啥 更好的算法么

我来回复

您尚未登录,请登录后再回复。点此登录或注册