Duda ejercicio 5 Examen febrero 2023

Duda ejercicio 5 Examen febrero 2023

de Matias Bajac Berhau -
Número de respuestas: 1

Buenas tardes, queria saber si al momento de evaluar que vector es mas largo es correcto comparar el largo del vector (n1 < n2) y no  v1(1) < v2(1) como esta en la solución

Mi solución fue la siguiente:

function vdif = difRec(v1,v2)
 n1 = length(v1);
 n2 = length(v2);
 if n1 == 0 
vdif = v2;
  elseif n2 == 0 
vdif = v1;
else
    if n1 == n2 
    vdif = difRec(v1(1:n1-1), v2(1:n2-1));
    elseif n1 > n2
   vdif = [difRec(v1(1:n1-1), v2),v1(n1)];
   elseif n2 > n1 
   vdif = [vdifRec(v1), v2(1:n2-1),v2(n2)];
    end
end
end


				

En respuesta a Matias Bajac Berhau

Re: Duda ejercicio 5 Examen febrero 2023

de Ewelina Bakala -

Hola Matias,

te comento que v1(1) < v2(1) se usa para evaluar los valores de los primeros elemento, no el largo de los vectores. Comparar los largos no es correcto ya que los vectores pueden tener el mismo largo pero valores diferentes (por ejemplo [1 2 3] y [11 22 33]). La idea de la solución es comprar los primeros elementos de cada vector. Si los elementos son iguales, no se agregan a la solución y se sigue analizando ambos vectores sin los primeros elementos. Si uno es menor del otro, el menor se agrega a la solución y se sigue analizando los vectores, pero sacando el elemento que fue agregado a la solución.

Te recomiendo también que pruebes tu código en octave ya que la línea 

vdif = [vdifRec(v1), v2(1:n2-1),v2(n2)];
tiene un par de problemitas de sintaxis. 
Espero que te haya quedado más clara la solución.
Saludos!