Hej, muszę napisać program w jezyku Python w programie SAGE do mnożenia wielomianów, Algorytmem Karatsuby rekurencyjnie. Utknąłem w punkcie pisania rekurencji, program powinien wykonywać rekurencje az pojawią się tablice jednoelementowe, obecnie jestem na takim etapie
def Toom2B(w1,w2):
(tabw1,tabw2)=Toom2A(w1,w2)
n=len(tabw1)
tabp1 = []
tabp2 = []
tabq1 = []
tabq2 = []
for i in range (len(tabw1) // 2):
tabp1.append(tabw1[i])
tabq1.append(tabw2[i])
for i in range (len(tabw1) // 2, len(tabw1)):
tabp2.append(tabw1[i])
tabq2.append(tabw2[i])
p1 = W(tabp1)
p2 = W(tabp2)
q1 = W(tabq1)
q2 = W(tabq2)
C = p1*q1
A = p2*q2
B = (p1+p2)*(q1+q2)-A-C
dzialanie = (x**n)*A + x**(n/2)*B + C
return (tabw1,tabw2,tabp1,tabp2,tabq1,tabq2,q1,q2, dzialanie)
Program ładnie sobie podzielił wielomiany w1 na p1 p2 i w2 na q1 q2 jednak jeżeli tabp1 lub tabp2 (...) to tablica wieloelementowa musi ją podzielić.
oprócz tego, wczesniej program zapisał wielomiany w1 w2 jako tablice, sprawdził czy tabw1 i tabw2 są równe w ilości elementów, jezeli nie to je wyrównał zerami, oraz długosc tablic jest równa którejśc potędze 2 zależy jak długi był wczesniej wielomian.
Pytanie moje dotyczy jak to ubrać w kod, żeby program dzielił p1 i p2 i jezeli np
p1=g1+f1 to sprawdził tak samo g1 i f1 czy są jednoelementowe, Nie mam zielonego pojecia jak to zrobić.