- Planteamiento Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un número.
Solución:int factorial(int n){
if(n==0){
return 1; //Caso Base
}
else {
return n * factorial(n-1); //Fórmula Recursiva
}
} - Planteamiento Ejercicio 2: Programar un algoritmo recursivo que calcule un número de la serie fibonacci.
Solución:
int fibonaci(int n){
if(n==1 || n==2) {
return 1;
}
else{
return fibonaci(n-1)+fibonaci(n-2);
}
} - Planteamiento Ejercicio 3: Programar un algoritmo recursivo que permita hacer la división por restas sucesivas. ver mas...
Solución:
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 invertir un número.Ejemplo: Entrada:123 Salida:321
Solución:
int invertir (int n) {
if (n < 10) { //caso base
return n;
}
else {
return (n % 10) + invertir (n / 10) * 10;
}
} - Planteamiento Ejercicio 5: Programar un algoritmo recursivo que permita sumar los dígitos de un número.Ejemplo: Entrada:123 Resultado:6
Solución:
int sumar_dig (int n) {
if (n == 0) { //caso base
return n;
}
else {
return sumar_dig (n / 10) + (n % 10);
}
} - 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:
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));
}
} - Planteamiento Ejercicio 7: Programar un algoritmo recursivo que permita sumar los elementos de un vector.
Solución:
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 multiplicar los elementos de un vector.
Solución:
int multiplicar (int vec [], int tam) {
if (tam == 0) {
return (vec [0]);
}
return (vec [tam] * multiplicar (vec, tam - 1));
} - Planteamiento Ejercicio 9: Programar un algoritmo recursivo que calcule el Maximo comun divisor de dos números.
Solución:
int sacar_mcd(int a, int b) {
if(b==0) {
return a;
}
else {
return sacar_mcd(b, a % b);
}
} - Planteamiento Ejercicio 10: Programar un algoritmo recursivo que determine si un número es positivo/negativo.
Solución:
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);
} - Planteamiento Ejercicio 11: rogramar un algoritmo recursivo que determine si un número es impar utilizando recursividad cruzada.
Solución:
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);
}
} - Planteamiento Ejercicio 12: Programar un algoritmo recursivo que permita sumar los elementos de una matriz.
Solución:
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);
} - Planteamiento Ejercicio 13: Programar un algoritmo recursivo que muestre el numero menor de un vector.
Solución:
int menorvec (int x [], int n, int menor) {
if (n == 0) {
if (menor > x [n]) {
return x [0];
}
else {
return menor;
}
}
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);
}
}
}
"Algo sólo es imposible hasta que alquien lo dude y termine probando lo contrario" Albert Einstein
martes, 8 de febrero de 2011
Ejemplos de Recursividad
Suscribirse a:
Enviar comentarios (Atom)
Saludos por el blog con respecto a la recursividad del problema cuatro creo que te bota el mismo numero
ResponderEliminarRealizar una función recursiva que cuente la cantidad de veces que un número A es
ResponderEliminardivisible por otro número B y devuelva el resultado del conteo. (Ej.: el número 16 es
divisible por 2 4 veces, así que la función debería devolver 4 de resultado).
el invertir no funciona!
ResponderEliminarel invertir no funciona!
ResponderEliminar#include
Eliminarint invertir(int n,int m){
if(n==0){
return m;
}
else{
return invertir(n / 10, m * 10 + n % 10);
}
}
int main(){
printf("%d",invertir(,0));
return 0;
}
Que sería M?
EliminarEste comentario ha sido eliminado por el autor.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminaren tu algoritmo de mayorvec la recursividad tiene otro nombre.
ResponderEliminaramigo me puedes ayudar con el de suma de numeros de un vector!
ResponderEliminarPara el de numeros invertidos, le hice modificacion y ya hay solucion para n numeros.
ResponderEliminarcodigo:
int invertir (int n) {
int aux=n,cont=-1;
float pot;
while (aux>=1)//para n numeros enteros
{
aux=aux/10;
cont=cont+1;
}
pot=pow(10,cont);
if (n < 10) { //caso base
return n;
}
else {
return (n % 10)*pot + invertir (n / 10) ;
}
}
Amigo en recursividad no se usa el bucle while
EliminarAqui les dejo el programa invertir un numero con recursividad.
EliminarPublic in invertir(int n) {
int resultado;
if(n<10){
resultado=1;
}else{
resultado=invertir(n/10)+(n%10)*(int) Math.pow(10,Math.log10(n));
}
return resultado;
}
Al inicio del código es
Eliminarpublic int invertir(int n)
Aqui les dejo el programa invertir un numero con recursividad.
EliminarPublic in invertir(int n) {
int resultado;
if(n<10){
resultado=1;
}else{
resultado=invertir(n/10)+(n%10)*(int) Math.pow(10,Math.log10(n));
}
return resultado;
}
Amigo en recursividad no se usa el bucle while
EliminarAmigo Yasmani no me funcionó tu método que invierte, tu solución está dirigida para solucionar cualquier número sin importar la cifra?
EliminarAqui les dejo el programa invertir un numero con recursividad.
Eliminarpublic static int invierte(int n) {
if (n < 10) {
return n;
} else {
return (n % 10) * ((int) Math.pow(10, (int) Math.log10(n))) + invierte(n / 10);
}
}
Este comentario ha sido eliminado por el autor.
EliminarEste comentario ha sido eliminado por el autor.
EliminarAlquien que me explique el de sacar el MCD
ResponderEliminarAmigo tienes el ejercicio 7 malo, este fue el que hice!
ResponderEliminarpublic static int sumarvec (int v[], int cant) {
cant--;
if (cant < 0) {
return 0;
}
else {
return sumarvec(v, cant) + v[cant];
}
}
Gracias por los ejercicios! He aprendido bastante..
http://foro.elhacker.net/ejercicios/ejercicios_recursivos_en_java_y_sus_soluciones-t231013.0.html
ResponderEliminarpero esas son funciones que pongo en el int main()??
ResponderEliminarOrdenar de menor a mayor una cadena de numeros con recursividad, sin arreglos?
ResponderEliminarcomo mando a imprimir el ejercicio 13
ResponderEliminarSaber un número si es amigo recursivamente
ResponderEliminarEn la suma de la matriz a que te refieres con int orden?? ??
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarDeterminar si dos vectores vec1 y vec2, de N posiciones, son iguales, Ayuda porfavor
ResponderEliminarProgramar un algoritmo recursivo que permita resolver el cuadro latino.
ResponderEliminarNo entiendo como podría ser el código ahí, me podrías ayudar?
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola, necesito ayuda como harian este ejercicio??
ResponderEliminarEscriba un subprograma recursivo que asuma la existencia de un arreglo de cadenas de caracteres y genere la suma de todas las longitudes de las cadenas.
de antemano Muchisimas Gracias!!!
como hago contar digitos menores a 5??? en recursivo
ResponderEliminarnecesito estos Ejercicios quien me podria ayudar. le agradezco
ResponderEliminar1. Escriba una definición recursiva de una función que tiene un parámetro n de tipo entero y que devuelve el n-ésimo número de Fibonacci. Los números de Fibonacci se definen de la siguiente manera:
F0 = 1
F1 = 1
Fi+2 = Fi + Fi+1.
2.-Escriba una función recursiva que ordene de menor a mayor un arreglo de enteros basándose en la siguiente idea: coloque el elemento más pequeño en la primera ubicación, y luego ordene el resto del arreglo con una llamada recursiva.
3. Escribir un programa que calcule el máximo común divisor (MCD) de dos números enteros positivos. Si M >= N. Una función recursiva para MCD es
MCD = M si N =0
MCD = MCD (N, M mod N) si N <> 0
El programa le debe permitir al usuario ingresar los valores para M y N desde la consola. Una función recursiva es entonces llamada para calcular el MCD. El programa entonces imprime el valor para el MCD. Si el usuario ingresa un valor para M que es < que N el programa es responsable de switchear los valores.
Thanks for this article. Your article helped me in clearing my doubts on this topic.
ResponderEliminarCheers,
http://www.flowerbrackets.com/random-numbers-in-java/
ayuda:
ResponderEliminarDado un arreglo de longitud N con valores generador pseudo aleatoriamente ,
A) calcular el promedio recursivamente
B) imprimir todos los impares, recursivamente
C)imprimir todos los pares, recursivamente
D)imprimir el arreglo desde el indice 0 hasta el indice N-1
E) encontrar el elemento mayor
Execelente informacion, muy bueno la verdad
ResponderEliminarAlguien me facilite la suma total de digitos ojo de posicion par y impar de forma recurciva xfa.
ResponderEliminarHola muy buenas amm tenia un ejercicio de un vector x del n elemento encontrar la posicion z
ResponderEliminarPara el ejercicio 4 de invertir así funciona bien:
ResponderEliminarint invertir(int n)
{
if (n < 10)
{ //caso base
return n;
}
else
{
String numero = n.ToString();
int potencia = numero.Length - 1;
int variable = (n % 10) * (int)Math.Pow(10, potencia);
return (n % 10) * (int)Math.Pow(10,potencia) + invertir(n / 10);
}
}
a mi no me funciona ninguno en sql con los datos que vosotros estáis indicando, me falta algo??
ResponderEliminaralguien sabe como sacar un descuento de forma recursiva??
ResponderEliminarEjercicio 4. Numero invertido, así funciona bien.
ResponderEliminarclass invertidos{
int i = 0;
int invertido(int n) {
if (n<=0){
return i;
}else{
i=(n%10+i*10);
n=n/10;
return invertido(n);
}
}
}