Ejemplos de Recursividad

October 24, 2018 | Author: Davs Hy | Category: N/A
Share Embed Donate


Short Description

Download Ejemplos de Recursividad...

Description

Ejemplos de Recursividad 1. Planteamiento Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un número. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8.

int factorial( int n){ if(n==0){ return 1; //Caso Base

} else { return n * factorial(n-1); factorial(n-1);

//Fórmula Recursiva

} }

2. Planteamiento Ejercicio 2: Programar un algoritmo recursivo que calcule un número de la serie fibonacci. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8.

int fibonaci(int n){ if(n==1 || n==2) { return 1;

} else{ return fibonaci(n-1)+fibonaci(n-2);

} }

3. Planteamiento Ejercicio 3: Programar un algoritmo recursivo que permita hacer la división por restas sucesivas. ver mas... Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8.

int division ( int a, int b) { if(b > a) { return 0;

} else { return division(a-b, b) + 1;

} }

Planteamiento Ejercicio 4: Programar un algoritmo recursivo que permita 4. invertir un número.Ejemplo: Entrada:123 Salida:321 Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8.

int invertir ( int n) { //caso base if (n < 10) { return n;

} else { return (n % 10) + invertir (n / 10) * 10;

} }

5. Planteamiento Ejercicio 5: Programar un algoritmo recursivo que permita sumar los dígitos de un número. Ejemplo: Entrada:123 Resultado: 6 Solución: view plainprint?

1. 2.

int sumar_dig ( int n) { if (n == 0) { //caso base

3. 4. 5. 6. 7. 8.

return n;

} else { return sumar_dig (n / 10) + (n % 10);

} }

6.

Planteamiento Ejercicio 6: Programar un algoritmo recursivo que permita hacer una multiplicación, utilizando el método Ruso. Para mas información: aquí.

Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

int mult_rusa( int A, int B) { if(A==1){ return (B);

} if(A%2!=0){ return (B+mult_rusa( A/2 , B*2));

} else{ return (mult_rusa( A/2 , B*2));

} }

7. Planteamiento Ejercicio 7: Programar un algoritmo recursivo que permita sumar los elementos de un vector. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8.

int suma_vec(int v [], int n) { if (n == 0) { return v [n];

} else { return suma_vec(v, n - 1) + v [n];

} }

Planteamiento Ejercicio 8: Programar un algoritmo recursivo que permita 8. multiplicar los elementos de un vector. Solución: view plainprint?

1. 2. 3. 4. 5. 6.

int multiplicar ( int vec [], int tam) { if (tam == 0) { return (vec [0]);

} return (vec [tam] * multiplicar (vec, tam - 1));

}

9. Planteamiento Ejercicio 9: Programar un algoritmo recursivo que calcule el Maximo comun divisor de dos números. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8.

int sacar_mcd( int a, int b) { if(b==0) { return a;

} else { return sacar_mcd(b, a % b);

} }

10. Planteamiento Ejercicio 10: Programar un algoritmo recursivo que determine si un número es positivo/negativo. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8. 9.

public boolean positivo( int n){ if(n0) return false ; else return positivo(n);

}

11. Planteamiento Ejercicio 11: rogramar un algoritmo recursivo que determine si un número es impar utilizando recursividad cruzada. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.

public boolean par( int n){ if(n==0) { return true ;

} else { return impar(n-1);

} } public boolean impar( int n){ if(n==0) { return false;

} else { return par(n-1);

} }

12. Planteamiento Ejercicio 12: Programar un algoritmo recursivo que permita sumar los elementos de una matriz. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

int suma (int fila, int col, int orden, int mat [] [])

{ if (fila == 0 && col == 0) return mat [0] [0]; else if (col < 0) return suma (fila - 1, orden, orden, mat); else return mat [fila] [col] + suma (fila, col - 1, orden, mat);

}

13. Planteamiento Ejercicio 13: Programar un algoritmo recursivo que muestre el numero menor de un vector. Solución: view plainprint?

1. 2. 3. 4. 5. 6. 7.

int menorvec ( int x [], int n, int menor) { if (n == 0) { if (menor > x [n]) { return x [0];

} else { return menor;

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.

} } else{ if (menor > x [n]) { return menorvec (x, n - 1, x [n]);

} else { return menorvec (x, n - 1, menor);

} } } int mayorvec ( int numeros [], int posicion) { int aux; if (posicion == 0) { return numeros [posicion];

} else {

aux = mayor (numeros, posicion - 1); if (numeros [posicion] > aux){ return numeros [posicion]; } else{ return mayor (numeros, posicion - 1); } } }

mplementación  A continuación se muestra el Ordenamiento por inserción en distintos lenguajes de programación: [editar ]C

void ordIns(int vector[], int n) { int i, j, indice; for (i=1; i < n; i++) { indice = vector[i]; for (j=i-1;j >= 0 && vector[j] > indice;j--) { vector[j + 1] = vector[j]; } vector[j+1] = indice; } } [editar ]C++

template void insertionSort(std::vector& v, int fin) { int i, j, index; for (i=1; i = 0 && v.at(j)>index) { v.at(j+1)=v.at(j); j--; } v.erase(v.begin()+j+1); v.insert(v.begin()+j+1,index); } }

public static void insertSort (int[]& v) { int aux; int j; for (int i=1; i=0 && v[j]>aux; j--){ v[j+1] = v[j]; v[j] = aux;

} } } [editar ]Java

int temp, j; for (int i=1; i < vector.length; i++){

temp = vector[i]; j = i-1;  while (j >= 0 && vector[j] > temp){

vector[j + 1] = vector[j]; j--; } vector[j+1] = temp; } [editar ]JavaScript

for (var i=1; i < vector.length; i++)

{ var temp = vector[i]; var j = i-1;

while (j >= 0 && vector[j] > temp) { vector[j + 1] = vector[j]; j--; } vector[j+1] = temp; }

my @array = qw( 1 7 4 9 4 7 2 3 0 8 );

insercion(\@array); say "@array"; sub insercion { my $array_ref = shift; for my $i (1 .. $#$array_ref) { my $j = $i - 1;

arg. es una ref. a un array # para todos los índices # índice anterior

my $x = $array_ref->[$i];

# elemento a comparar

next if $array_ref->[$j] = 0

# buscamos and

$array_ref->[$j] > $x);

splice @$array_ref, $j+1, 0, splice @$array_ref, $i, 1;

# ¡extracción e

inserción! }

}  __END__ 0 1 2 3 4 4 7 7 8 9 [editar ]PHP

function insert_sort($arr){

$count = count($arr); for($i=1; $i=0 && $arr[$j] > $tmp; $j--){ $arr[$j+1] = $arr[$j]; } $arr[$j+1] = $tmp; } return $arr; } [editar ]Pascal

Procedure InsertionSort(var insertion:Array_integer; array_size: Integer);  Var i, j, index : Integer; Begin For i := 2 to array_size do Begin index := insertion[i];

j := i-1;  While ((j > 0) AND (insertion[j] > index)) do Begin

insertion[j+1] := insertion[j]; j := j - 1; End ; insertion[j+1] := index; End ; End ; [editar ]Python

def insertionSort(numeros): #numeros es una lista tama = len(numeros) #creamos una variable igual al tamaño de la lista for i in range(tama):

indice = numeros[i] a = i-1  while (a >= 0 and  numeros[a] > indice): numeros[a+1] = numeros[a] a = a-1 numeros[a+1] = indice  print (numeros) #imprime la lista ordenada [editar ]Ruby

def insertion_sort(array) for j in 1...array.size key = array[j] i = j - 1  while i > = 0 and  array[i] >  key array[i + 1] = array[i] i = i - 1 end  array[i + 1] = key end  array end  [editar ]Visual Basic .NET Private Sub insertionSort(ByVal numbers()  As Integer) ' Es una función, 'debemos pasarle el array de números desde el Sub Main() Dim  i, j, index  As Integer

i = 1 Do

index = numbers(i) j = i - 1  While ((j >= 0)  And  (numbers(j) > index))

numbers(j + 1) = numbers(j) j = j - 1 End   While

numbers(j + 1) = index i = i + 1 Loop Until i > (UBound(v)) End  Sub [editar ]C# class Program

{

 public static void  Main(string[] args)

{ int x=0; do{

Leer leer=new Leer(); leer.dato(); Console.WriteLine("Repitiendo..."); } while(x==0); Console.ReadKey(true); } }  public class Inserccion_Directa {  private static int temporal, posicion=0; static int[] x=new int[15];  public int ordenar(int entrada){

x[posicion]=entrada; posicion++; for(int y=1;y=0 && x[z]>temporal; z--){ x[z+1] = x[z]; x[z] = temporal; } } for(int m=0;m=1) Y (A[j]>A[j+1]) hacer //intercambio de la posicion j y la siguiente temporal=A[j+1] A[j+1]=A[j] A[j]=temporal  j=j-1 fin mientras fin para fin algoritmo algoritmo insercion( A : array de n elementos indizados de 1 a n) variables: enteros i, j, v //estas son las pasadas, desde 2 hasta n //en cada una intentaremos encontrar la posición //relativa del elemento i entre los anteriores para i desde 2 hasta n //tomamos el elemento a examinar en una variable //temporal v v=A[i] //empezamos a comparar con los anteriores.  j=i-1 //en este bucle intentamos saber cual es su //lugar y le vamos haciendo hueco mientras (j>=1) Y (A[j]>v) hacer //desplazamos el elemento A[j] A[j+1]=A[j]  j=j-1 fin mientras A[j+1]=v fin para fin algoritmo

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF