def multiply_optimized(poly1, poly2):

result = []

if len(poly1)==0 and len(poly2)==0:

return result

if len(poly1)==0:

poly1=[1]

elif len(poly2)==0:

poly2=[1]

t1=split(poly1, poly2)

a0=t1[0][0]

a1=t1[0][1]

b0=t1[1][0]

b1=t1[1][1]

```
a1=increase_exponent(a1,len(a0))
b1=increase_exponent(b1,len(b0))
#print(f'a1:{a1},b1:{b1}')
y= multiply_basic(add(a0,a1),add(b0,b1))
z=multiply_basic(a1,b1)
u=multiply_basic(a0,b0)
u_add_z= add(u,z)
y_sub_u_add_z=sub(y,u_add_z)
result = add(u,y_sub_u_add_z)
result = add(result,z)
return result
```

**i have resolved the case to handle the if poly1 or poly2 is empty is this correct and i 'm not getting the point how to resolve the base case of the function**

**You are not doing **`recursion`

here, you are just calling another function `(multply_basic)`

, here.

**You are just using the **`multiply_basic`

function but with a lot more extra steps.

**For it to be **`recursion`

you need to call the same function i.e. `multiply_optimized`

inside the `multiply_optimized`

function

**n you make this more clear for me plzâ€¦**