乘法的算法

两种思路

一个是Divide and conquer(recursive)

另一个是binary 算法

 

def multiply(x,y):
if y ==0:
return 0
z = multiply(x,y/2)
if y%2 ==0:
return 2*z
else:
return x +2*z


#就是小时候学的叠罗汉的乘法
#
multiply2(x,y)
def multiply2(x,Y):
if(y==0): return 0
r = 0
while(x !=0):
if(x%2 !=0 ): r +=y
x = x/2
y = 2y
return r

知道了二进制的 10进制的就一样的了。

((x << 2) + x) << 1 # Here x*10 => x*[(2^2+1)*2]

也可以先把10进制转成2进制,还是divide and conquer + recursive

def convert(n):
if n == 0:
return
convert(n/2);
print (n%2),





posted on 2012-02-18 15:32  grepp  阅读(226)  评论(0编辑  收藏  举报

导航