You are on page 1of 5

1.

Algoritmo de Euclides para hallar MCD de dos nmeros en forma recursiva En C++
/* Funcin recursiva del algoritmo de Euclides * para calcular el MCD entre dos nmeros * \> Blozzter */ #include <stdio.h> // funcion para decidir cual es el menor de 2 numeros int min(int a, int b){ if (a < b){ return a; } else{ return b; } } // funcion para decidir cual es el mayor de 2 numeros int max(int a, int b){ if (a > b) return a; else{ return b; } } // funcion recursiva del algoritmo de Euclides int mcd(int m, int n){ int menor, mayor, resto; menor = min(m, n); mayor = max(m, n); resto = mayor % menor; if (resto == 0){ return menor; } else{ return mcd(menor, resto); } } main(){ int num1, num2; printf("numero uno: "); scanf("%d", &num1); printf("numero dos: "); scanf("%d", &num2); printf("el mcd de %d y %d es: %d\n", num1, num2, mcd(num1, num2)); }

En java:
import java.util.Scanner; class Ejercicio{ public static int mcd(int a,int b) { if(a%b==0) return b; else return mcd(b,a%b); } public static void main(String args[]) { Scanner in = new Scanner(System.in); int x,y; do{ System.out.print("Ingrese primer numero :"); x=in.nextInt(); }while(x<=0); do{ System.out.print("Ingrese segundo numero :"); y=in.nextInt(); }while(y<=0); System.out.println("El mcd de "+x+" y "+y+" es : "+mcd(x,y)); } }

2. Torres de Hanoi en forma recursiva


En C++ #include<stdio.h> int hanoi(int n) { if(n==1) return 1; else return 2 * hanoi(n-1) + 1; } int main() { int disc, mov; printf("::TORRES DE HANOI::\n"); printf("Numero de discos: ");scanf("%i",&disc); printf("\tMovimientos necesarios: %i\n", hanoi(disc)); return 0; }

3. Funcion de Ackerman Recursivamente


En C++

#include <iostream> using namespace std; int Ackerman(int m, int n) { if(m==0) return n+1; else { if(n==0) return Ackerman(m-1, 1); else return Ackerman(m-1, Ackerman(m, n-1)); } } int main() { int m, n, num ; cout<<"\n FUNCION DE ACKERMAN \n\n";

cout<<"Ingrese <m>: ";

cin>> m ; cout<<"Ingrese <n>: "; cin>> n ; num = Ackerman(m,n); cout<<"\nEl numero es: "<< num <<endl<<endl; system("pause"); }

#include <iostream> using namespace std; bool bBinaria(int arr[], int base, int tope, int e){ int aux; aux = (base+tope)/2; if(arr[aux]!=e && (base==tope)) return false; if(arr[aux]==e) return true; if(arr[aux]<e) return bBinaria(arr, aux+1, tope, e); if(arr[aux]>e) return bBinaria(arr, base, aux-1, e); } int main(){ int n, e; cout << "Proporcione el tamao del arreglo"<<endl; cin >> c; int arr[n-1]; cout <<"Introduzca elementos en el arreglo"<<endl; for(int i=0; i<c; i++){ cin >> arr[i]; } cout <<"Elemento a buscar"<<endl; cin >> e; if(bBinaria(arr, 0, n-1, e)) cout << "El elemento se encuentra en el arreglo"<<endl; else cout << "No se encontro el elemento" <<endl; return 0; }

You might also like