Índice

Puesta en práctica: recursividad

Ejercicio 1

Mostrar con una función recursiva todos los números entre n y n’ introducidos por el usuario.

Ejercicio 2

¿Qué imprimen los programas siguientes?

// programa 1 
void f(int n) 
{ 
    if (n>0){ 
        f (n-3); 
        printf("%3d\n",n); 
        f (n-2); 
    } 
} 
 
int main() 
{ 
    f(6); 
    return 0; 
} 
 
// programa 2 
void f(int n) 
{ 
    if (n>0){ 
        f (n/10-100); 
        printf("%3d\n",n); 
        f (n/5-200); 
    } 
} 
int main() 
{ 
    f (10000); 
    return 0; 
}

Ejercicio 3

Reemplazar las funciones f(), g(), h() mostradas a continuación por variantes iterativas equivalentes (más o menos). Comparar en cada caso la cantidad de memoria usada y el tiempo de cálculo necesario para cada una de las variantes.

void f(void) 
{ 
    if (getchar() == ’ ’) 
        f (); 
} 
 
void g(int n) 
{ 
    int i; 
    if (n>0){ 
        scanf("%d",&i); 
        g(n-1); 
        printf("%d\n",i); 
    } 
} 
 
int h(int n) 
{ 
    return n<0 ? 0 : (n==0 ? 1 : h(n-1) + h(n-2)); 
}

Ejercicio 4

Escribir una función que reciba como parámetro un entero y devuelva la suma de sus cifras. Comparar dos alternativas de solución a este problema: una recursiva y otra iterativa.

Ejercicio 5

Escribir un programa que sirva para leer una sucesión de números reales en coma ...