Procedure trabajarengoogle (var a,b: array of integer ; m,i:integer); begin trabajarengoogle (a, b, m*a[i], i+1); b[i]:= m; end;
El problema no es que la complejidad del problema no sea O(n), sino que lo que contiene cada elemento de la matriz b no es lo que pide le problema: "bi = a1*a2*...*an/ai".
Por ejemplo, en tu propuesta, la primera posición de b tiene el valor 1, la segunda posición tiene a1, la tercera posición tiene a1 * a2, etc...
#78#80 No se si acabo de entender qué quiere decir you are allowed to use only constant space. ¿Descartaría eso Arrays auxiliares y/o funciones recursivas?
#84 El tuyo tiene orden n², si no sería la solución ya que cualquier función recursiva se puede convertir en recursiva de cola, y cualquier función recursiva de cola se puede convertir en iterativa.
(ah, el código anterior está en python, pero se lee muy mal por falta de indentación)
#78 Lo he estado pensando y no veo por qué se tienen que recorrer los arrays 3 veces. Necesitas recorrer 'a' 1 vez para obtener 'c' y 'd', ¿no? Y luego recorrer 1 vez 'b' para ir asignando los resultados. ¿Hay algo que no he entendido de tu planteamiento?
#82 Con lo que tienes puesto no haces nunca la división (o el no multiplicar el elemento 'i') que piden
De todas formas, y corrígeme/me corrijan si me equivoco, pero usar recursividad para recorrer una lista no es muy buena idea porque consumes "mucha" memoria en cada iteración, lo cual no ocurre si lo haces con un bucle
Pero yo lo he argumentado algo más
No veas que rayada llevamos todos con el problemita de los Coj...googles