Pregunta simplemente Pseudocódigo

votos
1

Soy nuevo en psuedocode, y estoy teniendo problemas para poner todas las piezas juntas:

Esta es la definición de una función foo llamado cuyas entradas son dos enteros y una matriz de enteros a[1] ... a[n].

1 Foo(k,m, a[1],...,a[n]) 
2   if (k < 1 or m > n or k > m) return 0 
3   else return a[k] + Foo(k+1,m,a[1],...,a[n])

Supongamos que los números enteros de entrada son k=2y m=5y la matriz de entrada contiene [5, 6, 2, 3, 4, 8, 2]. ¿Qué valor regreso Foo? Usando la notación de sumatoria, dar una fórmula general para lo que calcula Foo.

Éste está haciendo que me duela la cabeza. Esto es lo que he hecho hasta ahora:

La línea 2 tiene tres sentencias condicionales:

  • Si k <1 // si 2 <1..this es falsa
  • Si m> n // si 5 es mayor que la cantidad de valores de la matriz, que es 7, por lo que esto es falso
  • Si k> m // si 2> 5, esto es falso

Por lo que esta función se mostrará la línea 3. Línea 3 dice:

  • retorno a[k]que es a[2]que es el segundo valor de la matriz, que es 6. Así que toma 6 y añadirlo a(2+1, 5, a[1].....,a[n])

Es lo que he hecho correcta hasta allí? Si es así, ¿cómo iba yo a saber lo que a[n]es? ¿Se supone que la búsqueda de eso? ¿Cuál sería el resultado final de todo esto?

Publicado el 03/09/2010 a las 04:44
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
2

Respuesta simple: que la función devuelve la suma de todos los números de un [k], una [k + 1], ... a [m].

Lo que está haciendo es correcta hasta el momento. La "n" es simplemente un marcador de posición que significa que el último elemento de la matriz. Así que si su matriz de entrada es {5,6,2,3,4,8,2}, n = 7(hacer que su tiene siete elementos), y a[n] = 2.

Pero por lo que devuelve la suma de todos los números a [k], una [k + 1], ... a [m], que debe descubrir por sí mismo. Sólo continuar con su análisis. :)

Respondida el 03/09/2010 a las 04:54
fuente por usuario

votos
1

Así que toma 6 y añadirlo a (2 + 1, 5, a [1] ....., un [n])

Tome 6 y añadirlo a Foo (2 + 1, 5, a [1] ....., un [n]). Es una función recursiva. Usted tiene que evaluar la función de nuevo con k = 3 y m = 5.

Respondida el 03/09/2010 a las 04:56
fuente por usuario

votos
0

Creo que está confundido porque su pseudocódigo se ve como código real para mí. Puedo estar equivocado, pero se nos ha enseñado a escribir pseudocódigo de otra manera, el uso de frases inglés llano.

Respondida el 03/09/2010 a las 04:56
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more