Título: Función en recursividad Publicado por: sora_ori 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
Gracias y un saludo Título: Re: Función en recursividad Publicado por: NikNitro! 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. Título: Re: Función en recursividad Publicado por: sora_ori 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 Título: Re: Función en recursividad Publicado por: NikNitro! 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. Título: Re: Función en recursividad Publicado por: sora_ori en 7 Abril 2014, 22:44 pm Muchas gracias!
Tenía ya la variable "n" para el total de llamadas. Título: Re: Función en recursividad Publicado por: NikNitro! en 7 Abril 2014, 23:03 pm Pero la usabas para dos cosas distintas por lo que no te funcionaría.
Salud. Título: Re: Función en recursividad Publicado por: sora_ori 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
Error: syntax error before "i" Título: Re: Función en recursividad Publicado por: NikNitro! 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 Título: Re: Función en recursividad Publicado por: Eternal Idol 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. Título: Re: Función en recursividad Publicado por: NikNitro! 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 Título: Re: Función en recursividad Publicado por: Eternal Idol 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. Título: Re: Función en recursividad Publicado por: sora_ori en 8 Abril 2014, 22:42 pm Gracias por la ayuda "NikNitro!", te lo agradezco!
El código lo llevo así: Código
El error que me da es el siguiente: In function `f2x3': syntax error before "i" Título: Re: Función en recursividad Publicado por: noele1995 en 8 Abril 2014, 23:12 pm Bueno el error te da por este codigo
Código
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
Saludos Título: Re: Función en recursividad Publicado por: sora_ori 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
(http://oi62.tinypic.com/dhbtqf.jpg) ¿Es correcto lo que me hiciste? Con mi anterior versión me listaba los números. Saludos Título: Re: Función en recursividad Publicado por: leosansan 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
Lo de la variable i es para ir guardando las llamadas a la función. Y en main: Código
Y para terminar en la función, a lo bruto: Código
¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Función en recursividad Publicado por: noele1995 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 |