为什么输出0?

时间:2015-12-17 21:46:35

标签: python algorithm python-2.7

def russian (a,b):
    x=a
    y=b
    z=0
    while x>0:
        if x % 2 == 1: z=z+y
        y= y *2
        x= x/2
        return z
print russian(24,16)

此功能使用俄罗斯农民算法将两个数字相乘。我希望看到384作为我的输出,但我得到0。我究竟做错了什么?我使用的是Python 2.7。

2 个答案:

答案 0 :(得分:1)

您只计算一次z值,然后立即在while循环内返回它。 丢失return z的一级缩进。

答案 1 :(得分:1)

问题是你的while timesexecuted < 200:在while语句中,使得函数结束并在第一次迭代时返回return z0永远不会改变,因为z没有24 % 2 = 0