elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Función en recursividad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Función en recursividad  (Leído 4,833 veces)
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Función en recursividad
« en: 7 Abril 2014, 21:46 pm »

Hola, a ver si me pueden corregir este programa en C jeje

Programa que pedirá un número entero y hace una función int f2x3 con:

1) Si "n" es 1 escribirá "n" por pantalla y devolverá un 1.
2) Si "n" no es 1 y si es múltiplo de 2 y es múltiplo de 3 escribirá "n" por pantalla y
llamará a f2x3 con el valor n+5.
3) Si "n" no es 1 y es múltiplo de 2 pero no es múltiplo de 3 escribirá "n" por
pantalla y llamará a f2x3 con el valor n/2.
4) Si "n" no es 1 y es múltiplo de 3 pero no es múltiplo de 2 escribirá "n" por
pantalla y llamará a f2x3 con el valor n+2.
5) Si "n" no es 1 y no es múltiplo de 2 ni múltiplo de 3 escribirá "n" por pantalla
y llamará a f2x3 con el valor n-1.

Ejemplo: Si introducimos un 18

Escribirá por pantalla: 18,23,22,11,10,5,4,2,1 Total: 9 llamadas


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define FALSE 0
  5. #define TRUE 1
  6.  
  7. /* Declaracion de las funciones */
  8. unsigned int f2x3 (int);
  9.  
  10. /* Menu principal */
  11. int main(void){
  12.    unsigned int n; // Variable "n" donde se guarda el numero y que utilizará la funcion
  13.  
  14.    printf("Escribe un numero: ");
  15.    fflush(stdin);
  16.    scanf("%d", &n); // guardamos el numero introducido
  17.  
  18.    printf("\nTotal de llamadas: %d \n", f2x3(n)); // Mostramos el total de llamadas de la funcion
  19.  
  20.    getch();        
  21.    return 0;
  22. } // Fin main
  23.  
  24. /* Funcion */
  25. unsigned int f2x3 (int n) {
  26.  
  27.    printf("%i ", n); // Listamos los numeros que va llamando la funcion
  28.  
  29.    if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1
  30.    if ((n != 1) && (n % 2 == 0) && (n % 3 == 0)) return f2x3(n+5); // Caso II
  31.    if ((n != 1) && (n % 2 == 0) && (n % 3 != 0)) return f2x3(n/2); // Caso III
  32.    if ((n != 1) && (n % 2 != 0) && (n % 3 == 0)) return f2x3(n+2); // Caso IV
  33.    if ((n != 1) && (n % 2 != 0) && (n % 3 != 0)) return f2x3(n-1); // Caso V
  34.  
  35. } // Fin de la funcion


Gracias y un saludo


En línea

NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Función en recursividad
« Respuesta #1 en: 7 Abril 2014, 22:00 pm »

Pides corregir.. En qué te falla?

Saludos;)

PD: Yo usaría mas que muchos if una estructura switch.


En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Función en recursividad
« Respuesta #2 en: 7 Abril 2014, 22:05 pm »

En el ejemplo que he dado si pongo 18 me dice que el total de llamadas es "1" cuando en verdad son 9.


Saludos
En línea

NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Función en recursividad
« Respuesta #3 en: 7 Abril 2014, 22:22 pm »

Ah vale. Eso ya no lo sabía xD
Es fácil. Crea al principio un int numLlamadas = 0; y en cada if abres llave y pones numLlamadas++; y el return correspondiente

Saludos ;)

EDITO: Y que después imprima ese numLlamadas.

EDITO2: Aquí tienes el código como lo modificaría yo:

EI: no hace falta dar el codigo, gracias.
« Última modificación: 7 Abril 2014, 22:58 pm por Eternal Idol » En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Función en recursividad
« Respuesta #4 en: 7 Abril 2014, 22:44 pm »

Muchas gracias!

Tenía ya la variable "n" para el total de llamadas.
En línea

NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Función en recursividad
« Respuesta #5 en: 7 Abril 2014, 23:03 pm »

Pero la usabas para dos cosas distintas por lo que no te funcionaría.

Salud.
En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Función en recursividad
« Respuesta #6 en: 7 Abril 2014, 23:08 pm »

Me esta dando un error y llevo un rato intentando ver que es y no lo encuentro.


En esta parte:

Código
  1.    if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1
  2.    else { //CAMBIADO
  3.      (n % 2 == 0) && (n % 3 == 0) i=n+5; // Caso II //CAMBIADO
  4.      (n % 2 == 0) && (n % 3 != 0) i=n/2; // Caso III //CAMBIADO
  5.      (n % 2 != 0) && (n % 3 == 0) i=n+2; // Caso IV //CAMBIADO
  6.      (n % 2 != 0) && (n % 3 != 0) i=n-1; // Caso V //CAMBIADO
  7.    } //CAMBIADO
  8.  
  9.    numLlamadas++; //CAMBIADO

Error: syntax error before "i"
En línea

NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Función en recursividad
« Respuesta #7 en: 7 Abril 2014, 23:31 pm »

@EternalIdol, solo di el código modificado en vez de enumerar uno a uno los cambios. Es mas, el código era el suyo, por lo que creo que no rompí las normas. -.-
@sora no puedo responderte puesto que no veo el codigo que puse -.-

Salud
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Función en recursividad
« Respuesta #8 en: 8 Abril 2014, 00:35 am »

@EternalIdol, solo di el código modificado en vez de enumerar uno a uno los cambios. Es mas, el código era el suyo, por lo que creo que no rompí las normas. -.-

Si podias explicar los cambios necesarios para solucionar el problema y no publicar el codigo arreglado quiere decir que era innecesario.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
NikNitro!


Desconectado Desconectado

Mensajes: 1.309


Galletaaa!!!


Ver Perfil WWW
Re: Función en recursividad
« Respuesta #9 en: 8 Abril 2014, 00:44 am »

Y qué diferencia hay? Además, lo del else era una forma diferente de hacerlo... Bueno no discuto más. Sora, si quieres ejercicios resueltos, tengo mi blog en la firma ;)

Salud
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recursividad
Java
rjrn 8 9,816 Último mensaje 17 Marzo 2009, 19:33 pm
por weirdtyping
recursividad
Ejercicios
Choclito 0 3,587 Último mensaje 12 Mayo 2009, 04:47 am
por Choclito
Recursividad
Programación C/C++
Abanda_9 4 4,916 Último mensaje 29 Mayo 2010, 04:09 am
por Abanda_9
[Python] - función recursividad
Scripting
Meta 0 4,403 Último mensaje 20 Diciembre 2010, 14:40 pm
por Meta
recursividad en c++
Programación C/C++
krizalid1 2 5,798 Último mensaje 4 Junio 2011, 15:32 pm
por Don Pollo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines