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。
答案 0 :(得分:1)
您只计算一次z值,然后立即在while
循环内返回它。
丢失return z
的一级缩进。
答案 1 :(得分:1)
问题是你的while timesexecuted < 200:
在while语句中,使得函数结束并在第一次迭代时返回return z
而0
永远不会改变,因为z
没有24 % 2 = 0
。