Recientemente he estado estudiando recursividad; cómo escribirlo, analizarlo, etc. He pensado por un tiempo que la recurrencia y la recursividad eran la misma cosa, pero algunos problemas en tareas y cuestionarios recientes me hacen pensar que hay pequeñas diferencias, que la 'recurrencia' es la forma de describir un programa recursivo o función.¿Cómo uso el teorema maestro para describir la recursión?
Todo esto ha sido muy griego para mí hasta hace poco, cuando me di cuenta de que hay algo llamado 'teorema maestro' utilizado para escribir la 'recurrencia' de problemas o programas. He estado leyendo la página de wikipedia, pero, como de costumbre, las cosas están redactadas de tal manera que realmente no entiendo de qué está hablando. Aprendo mucho mejor con ejemplos.
Así, algunas preguntas: digamos que se le da esta recurrencia:
r (n) = 2 * r (n-2) + r (n-1);
r (1) = r (2) = 1
es esto, de hecho, en la forma del teorema maestro? Si es así, en palabras, ¿qué está diciendo? Si estuvieras tratando de escribir un pequeño programa o un árbol de recursión basado en esta recurrencia, ¿qué aspecto tendría? ¿Debería simplemente intentar sustituir números, ver un patrón, luego escribir un seudocódigo que pudiera crear recursivamente ese patrón o, dado que esto puede ser en la forma del teorema maestro, hay un enfoque matemático más directo?
Ahora, digamos que se le pidió que encuentre la recurrencia, T (n), para la cantidad de adiciones realizadas por el programa creado a partir de la repetición anterior. Puedo ver que el caso base probablemente sería T (1) = T (2) = 0, pero no estoy seguro de a dónde ir desde allí.
Básicamente, estoy preguntando cómo pasar de una recurrencia dada a un código, y todo lo contrario. Dado que esto se parece al teorema maestro, me pregunto si existe una forma directa y matemática de hacerlo.
EDITAR: Bien, he revisado algunas de mis tareas anteriores para encontrar otro ejemplo de dónde me preguntan, 'para encontrar la repetición', que es la parte de esta pregunta que estoy teniendo la publicación de problemas con.
recurrencia que describe de la mejor manera el número de operaciones de adición en el siguiente fragmento de programa (Cuando se llama con l == 1 y r == n)
int example(A, int l, int r) {
if (l == r)
return 2;
return (A[l] + example(A, l+1, r);
}
De acuerdo, parece bastante sencillo. Tampoco estoy seguro de qué es "recurrencia", pero mi profesor usa la palabra a menudo, y varias preguntas sobre la prueba de práctica nos piden que miremos un programa y luego lo busquemos. Editaré mi pregunta con otro ejemplo. –