Tarea 1 de Diseño de Algoritmos

Trimestre 2010 Otoño
Entrega: 4 de octubre de 2010 a las 22:00.

Problema 1: Los números de Padovan se definen de la siguiente manera: P(0) = 1, P(1) = 1, P(2) = 1 y P(N) = P(N-2) + P(N-3) para N >= 3. Escribe un programa llamado padoZZ (donde ZZ es la clave de dos dígitos asignada por el profesor) que lea un entero N y que calcule tanto el N-ésimo número de Padovan P(N) como la cantidad R de llamadas recursivas necesarias para obtener ese resultado. Por ejemplo si N = 5 entonces se llama a P(5), que a su vez llama a P(3) y a P(2). De estas dos, sólo P(3) hace llamadas recursivas a P(1) y a P(0), así en total se hacen R = 5 llamadas recursivas para calcular P(5) = 3. Puedes suponer que P(N) cabe en un entero de 64 bits sin signo.

Ejemplos de entrada
Ejemplos de salida
5
3 5
6
4 7

Problema 2: Considere la definición recursiva de la función Z(n) dada por Z(1) = 1, Z(2) = 1 y para n >= 1 se tiene que Z(2n) = Z(n) * (Z(n+1) + Z(n)) y Z(2n+1) = Z(n)^2 + Z(n+1)^2. Escribe un programa llamado zetaZZ (donde ZZ es la clave de dos dígitos asignada por el profesor) que lea un entero N y que calcule tanto el valor de Z(N) como la cantidad R de llamadas recursivas necesarias para obtener ese resultado. Por ejemplo si N = 5 entonces se llama a Z(5), que a su vez llama a Z(2) y a Z(3). De estas dos, sólo Z(3) hace llamadas recursivas a Z(1) y a Z(2), así en total se hacen R = 5 llamadas recursivas para calcular Z(5) = 5. Puedes suponer que Z(N) cabe en un entero de 64 bits sin signo.

Ejemplos de entrada
Ejemplos de salida
5
5 5
10
75 15

Notas: Tus programas no deben leer ni escribir nada adicional a lo que se indica en el enunciado. El tiempo de ejecución de sus algoritmos será considerado como parte de la evaluación.