DEV Community

Leo
Leo

Posted on

recursiones e iteraciones

cpp



#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>

using namespace std;

int FactorialRec( int N ) { return N == 0 ? 1 : FactorialRec( N-1 ) * N; }

int FactorialIte( int N )
{
  int fact = 1;

  while ( N > 0 ){

    fact *= N;
    N--;
  }

  return fact;
}

int FibonacciRec( int N ) { return N==0 || N==1 ? N : FibonacciRec( N - 1 ) + FibonacciRec( N - 2 ); }

int FibonacciIte( int N )
{
    if ( ( N == 0) || ( N == 1) ) return N; 

    int fibo, a = 0, b = 1, i = 2;

    while ( i <= N ) {
        fibo = b + a;
        a = b;
        b = fibo;
        i++;
    }

    return fibo;
}

void HanoiRec( int N, char Orig, char Dest, char Aux )         
{
    if ( N == 1 ) cout << "Mover un disco de " << Orig << " a "<< Dest<< endl;

    Hanoi( N - 1, Orig, Aux, Dest);
    cout << "Mover un disco de " << Orig << " a "<< Dest<< endl;
    Hanoi( N - 1, Aux, Dest, Orig);
}

void HanoiIte( int N, char Orig, char Dest, char Aux ){


}

int EuclidesRec( int M, int N ){ return N == 0 ? M : EuclidesRec( N, M % N); }

int EuclidesIte( int M, int N ){

    while ( N != 0 ){

        int x = N;
        N = M % N;
        M = x;
    }

    return M;
}

void Ackermann( int M, int N ){

    if ( M == 0 ){ return N + 1;}

    else {

        if ( N == 0 ) return Ackermann( M - 1, 1 );
        return Ackermann( M - 1, Ackermann( M, N - 1));
    }
}

void MenuPrincipal()
{
  int Opc, Num;
  char Frase[ 20 ];
  char Orig, Dest, Aux;
  int N, M;

  do {
       system("cls");
       cout << "Ejemplos utilizando algoritmos Recursivos" << endl;
       cout << "1. Factorial Recursivo." << endl;
       cout << "2. Factorial Iterativo." << endl;
       cout << "3. Fibonacci Recursivo." << endl;
       cout << "4. Fibonacci Iterativo." << endl;
       cout << "5. Euclides Recursivo." << endl;
       cout << "6. Euclides Iterativo." << endl;
       cout << "7. Invierte Cadena." << endl;
       cout << "8. Palindromo." << endl;
       cout << "9. Ackermann." << endl;
       cout << "10. Torres de Hanoi Recursivo." << endl;
       cout << "11. Torres de Hanoi Iterativo." << endl;
       cout << "0. Salir." << endl;

       cout << "Opcion: "; cin >> Opc;

       switch (Opc) {
         case 1: // Numero factorial
                 system("cls");
                 cout << "Dame un numero: ";
                 cin >> Num;
                 cout << "El factorial de " << Num << " es = " << FactorialRec(Num) << endl;
                 system("Pause");  
                 break;

        case 2: // Serie fibonacci
                 system("cls");
                 cout << "Dame un numero: ";
                 cin >> Num;
                 cout << "La serie Fibonacci de " << Num << " es = " << FibonacciRec(Num) << endl;
                 system("Pause");  
                 break;

        case 3: // Algoritmo de Euclides o MCD

        case 4: // Invierte Cadena
                system("cls");
                cout << "Escriba una frase: ";
                cin >> Frase;
                //cout << Invierte( Frase, 0, strlen( Frase )-1 );
                system("PAUSE");
                break;

        case 5: // Palindromo


        case 6: // Algoritmo de Ackermann

        case 7: // Torres de Hanoi
                Orig= 'A';
                Aux= 'B';
                Dest= 'C';

                cout << "Numero de discos: ";
                cin >> N;

                cout << "\n Los movimientos a realizar son: \n";
                Hanoi( N, Orig, Dest, Aux);         
                system("Pause");
                break; 
       };            

  } while (Opc!=0);
}

int main (){

  MenuPrincipal(); 
  getchar();

  return 0;
}


Enter fullscreen mode Exit fullscreen mode

Image of Docusign

Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs