3.44 (Visualización de la recursividad) Es interesante observar a la recursividad en "acción". Modifique la función factorial de la figura 3.14 para que despliegue su variable local y el parámetro de llamada recursiva. Por cada llamada recursiva, despliegue los resultados en una línea diferente y agregue un nivel de sangrado. Haga su mayor esfuerzo para que sus resultados sean claros, interesantes y útiles. Su objetivo aquí es diseñar e implementar un formato para los resultados que ayude a una persona a comprender mejor la recursividad. Tal vez desee agregar dichas capacidades de despliegue a los muchos otros ejemplos y ejercicios sobre recursividad que contiene el libro.
_____________________________________________________________________________________
Solución:
// Calculo de factoriales. #include <iostream> #include <iomanip> using namespace std; using std::setw; unsigned long factorial (unsigned long); int main() { cout <<endl<<endl<<"Se presentan los factoriales de los primeros"; cout <<" 10 enteros."<<endl; for ( int i = 0; i <= 10; i++) cout << setw(2) << i << "! = " <<factorial(i) << endl; return 0; } //////////////////////////////////////////////////// // FACTORIAL //////////////////////////////////////////////////// unsigned long factorial (unsigned long number) { if ( number <= 1 ) return 1; else { cout <<number <<" Llamada recursiva a factorial de: " << number - 1<< endl; return number * factorial(number-1); } }la ejecución del programa produce la siguiente salida:
Se presentan los factoriales de los primeros 10 enteros. 0! = 1 1! = 1 2 Llamada recursiva a factorial de: 1 2! = 2 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 3! = 6 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 4! = 24 5 Llamada recursiva a factorial de: 4 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 5! = 120 6 Llamada recursiva a factorial de: 5 5 Llamada recursiva a factorial de: 4 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 6! = 720 7 Llamada recursiva a factorial de: 6 6 Llamada recursiva a factorial de: 5 5 Llamada recursiva a factorial de: 4 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 7! = 5040 8 Llamada recursiva a factorial de: 7 7 Llamada recursiva a factorial de: 6 6 Llamada recursiva a factorial de: 5 5 Llamada recursiva a factorial de: 4 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 8! = 40320 9 Llamada recursiva a factorial de: 8 8 Llamada recursiva a factorial de: 7 7 Llamada recursiva a factorial de: 6 6 Llamada recursiva a factorial de: 5 5 Llamada recursiva a factorial de: 4 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 9! = 362880 10 Llamada recursiva a factorial de: 9 9 Llamada recursiva a factorial de: 8 8 Llamada recursiva a factorial de: 7 7 Llamada recursiva a factorial de: 6 6 Llamada recursiva a factorial de: 5 5 Llamada recursiva a factorial de: 4 4 Llamada recursiva a factorial de: 3 3 Llamada recursiva a factorial de: 2 2 Llamada recursiva a factorial de: 1 10! = 3628800
No hay comentarios:
Publicar un comentario