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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  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,826 veces)
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 #10 en: 8 Abril 2014, 00:46 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

Que hagan algo mas que copiar y pegar, es lo minimo, sino estamos haciendo tareas ajenas directamente.


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
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Función en recursividad
« Respuesta #11 en: 8 Abril 2014, 22:42 pm »

Gracias por la ayuda "NikNitro!", te lo agradezco!

El código lo llevo así:

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


El error que me da es el siguiente:

In function `f2x3':
syntax error before "i"


En línea

noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Función en recursividad
« Respuesta #12 en: 8 Abril 2014, 23:12 pm »

Bueno el error te da por este codigo
Código
  1. (n % 2 == 0) && (n % 3 == 0) i=n+5; // Caso II //CAMBIADO
  2. (n % 2 == 0) && (n % 3 != 0) i=n/2; // Caso III //CAMBIADO
  3. (n % 2 != 0) && (n % 3 == 0) i=n+2; // Caso IV //CAMBIADO
  4. (n % 2 != 0) && (n % 3 != 0) i=n-1; // Caso V //CAMBIADO

Intentas hacer ifs pero no estas poniendo ningun if... aun asi yo lo sustituiria por ifs anidados y de esta forma evitamos comprobaciones innecesarias.

Código
  1. if (n == 1)
  2.    return 1;
  3. else
  4. {
  5.    if (n % 2 == 0)
  6.        if (n % 3 == 0)
  7.            i=n+5;
  8.        else
  9.            i=n/2;
  10.    else
  11.        if (n % 3 == 0)
  12.            i=n+2;
  13.        else
  14.            i=n-1;
  15. }

Saludos
En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Función en recursividad
« Respuesta #13 en: 8 Abril 2014, 23:22 pm »

Lo he podido compilar, pero la versión que me ha hecho "NikNitro" no me hace nada!  :-X



¿Es correcto lo que me hiciste? Con mi anterior versión me listaba los números.


Saludos
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Función en recursividad
« Respuesta #14 en: 9 Abril 2014, 00:34 am »


Hecho de prisa y corriendo, creo que esta es la salida correcta:

Citar
Escribe un numero: 18
18 23 22 11 10 5 4 2 1
Total de llamadas: 9


Process returned 0 (0x0)

Unos pequeños ajustes menores en la declaración de la función:

Código
  1. void  f2x3 (int n,int i) ;
  2.  

Lo de la variable i es para ir guardando las llamadas a la función. Y en main:

Código
  1. scanf("%d", &n);
  2.    f2x3(n,i);

Y para terminar en la función, a lo bruto:

Código
  1. void  f2x3 (int n,int i) {
  2.    if (n == 1){
  3.      printf ("%d ",n);
  4.      printf("\nTotal de llamadas: %d \n", ++i);
  5.    }
  6.    else
  7.    {
  8.        if (n % 2 == 0 && n % 3 == 0){
  9.          printf ("%d ",n);
  10.          f2x3 (n+5,i+1);
  11.        }
  12.        else if (n % 2 == 0 &&  n % 3 != 0){
  13.              printf ("%d ",n);
  14.              f2x3 (n/2,i+1);
  15.            }
  16.        else if (n % 3 == 0 && n % 2 != 0){
  17.              printf ("%d ",n);
  18.              f2x3 (n+2,i+1);
  19.            }
  20.        else if (n % 2 != 0 &&  n % 3 != 0){
  21.              printf ("%d ",n);
  22.              f2x3 (n-1,i+1);
  23.            }
  24.    }
  25. }

¡¡¡¡ Saluditos! ..... !!!!


En línea

noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Función en recursividad
« Respuesta #15 en: 9 Abril 2014, 00:36 am »

No estas llamando a la funcion en el main... normal que no te funcione.

Porcierto numllamadas++ tiene que estar antes de los ifs y no justo antes del ultimo return porque sino hay una llamada que no se contaria....

A mi si que me funciona

Saludos
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,801 Último mensaje 17 Marzo 2009, 19:33 pm
por weirdtyping
recursividad
Ejercicios
Choclito 0 3,579 Último mensaje 12 Mayo 2009, 04:47 am
por Choclito
Recursividad
Programación C/C++
Abanda_9 4 4,912 Último mensaje 29 Mayo 2010, 04:09 am
por Abanda_9
[Python] - función recursividad
Scripting
Meta 0 4,398 Último mensaje 20 Diciembre 2010, 14:40 pm
por Meta
recursividad en c++
Programación C/C++
krizalid1 2 5,796 Ú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