我被python中的多项式除法困住了。这是我修改过的代码。while循环不起作用。此代码只将原始L输出为r。如果删除while循环,则只输出第一次除法的剩余部分。我尝试了很多方法来实现它,但都失败了。任何建议将不胜感激。谢谢!def GetDegree(poly):
while poly and poly[-1] == 0:
poly.pop() # normalize
return len(poly)-1
def division(p1,p2):
d1 = GetDegree(p1)
d2 = GetDegree(p2)
if d2 < 0 or d1<0:
raise ZeroDivisionError
if d1 > d2:
S,L = p2,p1#obtain S with lower degree, L with higher degree
else:
S,L = p1,p2
d1 = GetDegree(L)
d2 = GetDegree(S)
while d1>0:
q = [0]*d1
d = [0]*(d1 - d2) + S#shift short towards right by d1-d2
mult = q[d1 - d2] = L[-1] / float(d[-1])#get the result by dividing the first term of the dividend by the highest term of the divisor
d = [coef*mult for coef in d]#multiply the above result