我得到了这个代码(它进行了整数取幂),我应该知道我的代码在使用(n1)时循环了多少次,使用(n2)if的次数是多少次以及乘法次数是多少次使用(n3)完成,我想我正确地放置了n1和n2,但我不知道应该放在哪里n3或者我应该如何计算它。
def power(a,b):
n1=0
n2=0
n3=1
result = 1
while b>0:
n1+=1
if b%2 == 1: # b is odd
result = result*a
n2+=1
a = a*a # squares power of a
b = b//2 # removes least significant bit of b
n3+=1
return result,n1,n2,n3
答案 0 :(得分:1)
由于在if
语句中进行了乘法运算:
result = result * a
你应该在那里增加n3
:
def power(a, b):
n1 = 0
n2 = 0
n3 = 1
result = 1
while b > 0:
n1 += 1 # loop
if b % 2 == 1:
result = result * a
n2 += 1 # if
n3 += 1 # multiplication
a = a * a
b = b // 2
n3 += 1 # multiplication
return result, n1, n2, n3