Documente Academic
Documente Profesional
Documente Cultură
1. Planteamiento Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un nmero. Solucin:
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); } }
//Frmula Recursiva
2. Planteamiento Ejercicio 2: Programar un algoritmo recursivo que calcule un nmero de la serie fibonacci. Solucin:
view plainprint?
1. 2. 3. 4. 5. 6. 7. 8.
3. Planteamiento Ejercicio 3: Programar un algoritmo recursivo que permita hacer la divisin por restas sucesivas. ver mas... Solucin:
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; } }
4. Planteamiento Ejercicio 4: Programar un algoritmo recursivo que permita invertir un nmero.Ejemplo: Entrada:123 Salida:321 Solucin:
view plainprint?
1. 2. 3. 4. 5. 6. 7. 8.
int invertir (int n) { if (n < 10) { //caso base return n; } else { return (n % 10) + invertir (n / 10) * 10; } }
5. Planteamiento Ejercicio 5: Programar un algoritmo recursivo que permita sumar los dgitos de un nmero.Ejemplo: Entrada:123 Resultado:6 Solucin:
view plainprint?
1. 2.
3. 4. 5. 6. 7. 8.
6. Planteamiento Ejercicio 6: Programar un algoritmo recursivo que permita hacer una multiplicacin, utilizando el mtodo Ruso. Para mas informacin: aqu. Solucin:
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. Solucin:
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]; } }
8. Planteamiento Ejercicio 8: Programar un algoritmo recursivo que permita multiplicar los elementos de un vector. Solucin:
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 nmeros. Solucin:
view plainprint?
1. 2. 3. 4. 5. 6. 7. 8.
10. Planteamiento Ejercicio 10: Programar un algoritmo recursivo que determine si un nmero es positivo/negativo. Solucin:
view plainprint?
1. 2. 3. 4. 5. 6. 7. 8. 9.
public boolean positivo(int n){ if(n<0) return true; else return negativo(n); } public boolean negativo(int n){ if(n>0) return false; else return positivo(n); }
11. Planteamiento Ejercicio 11: rogramar un algoritmo recursivo que determine si un nmero es impar utilizando recursividad cruzada. Solucin:
view plainprint?
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. Solucin:
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. Solucin:
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); } } }
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 <class T> void insertionSort(std::vector<T>& v, int fin) { int i, j, index; for (i=1; i <fin; i++) { index = v.at(i); j = i-1; while (j >= 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<v.length; i++) { aux=v[i]; for (j=i-1; j>=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 );
my $x = $array_ref->[$i]; next if $array_ref->[$j] <= $x; do { $j--; } while ($j >= 0 and $array_ref->[$j] > $x);
# buscamos
# extraccin e
} __END__ 0 1 2 3 4 4 7 7 8 9 </source>
[editar]PHP
function insert_sort($arr){ $count = count($arr); for($i=1; $i<$count; $i++){ $tmp = $arr[$i]; for ($j=$i-1; $j>=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 tamao 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 funcin, 'debemos pasarle el array de nmeros 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<posicion;y++){ temporal=x[y]; for(int z=y-1;z>=0 && x[z]>temporal; z--){ x[z+1] = x[z]; x[z] = temporal; } } for(int m=0;m<x.Length;m++){ Console.WriteLine("Contenido "+x[m]); } return 0; } } public class Leer{ int cadena; public int dato(){ cadena=Convert.ToInt32(Console.ReadLine()); Inserccion_Directa objeto1=new Inserccion_Directa(); objeto1.ordenar(cadena); return cadena; } }
[editar]Prolog
algoritmo insercion( A : array de n elementos indizados de 1 a n) variables: enteros i,j, temporal //estas son las pasadas, desde 2 hasta n //en cada una intentaremos encontrar la posicin //relativa del elemento i entre los anteriores para i desde 2 hasta n j=i-1 //vamos "descendiendo" el elemento //haciendo intercambios mientras (j>=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 posicin //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