Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: sora_ori en 27 Marzo 2014, 18:58 pm



Título: Enunciado ejercicio en C (no entiendo lo que me piden)
Publicado por: sora_ori en 27 Marzo 2014, 18:58 pm
Hola compañeros, tengo un ejercicio en C que no se muy bien lo que me pide. Os dejo el enunciado para ver si alguien es tan amable de decirme que es lo que pide  ;D


Citar
Hacer un programa en lenguaje C que pedirá un número entero positivo "n".
Hacer una función: int funcioRe (int n)
  • Si n es 1 escribirá "n" por pantalla y devolverá un 1.
En caso contrario:
  • Si "n" es par, entonces escribirá "n" por pantalla y llamará a funcioRe () con
el valor n / 2, (hay que pensar lo que retornara en este caso)
 
  • Si es impar entonces escribirá "n" por pantalla y llamará a funcioRe () con el
valor 3n +1 (hay que pensar lo que retornara en este caso)
El problema consiste en saber el número de llamadas que se hacen hasta obtener el valor 1.

Ejemplo: si introducimos: 22
El algoritmo escribirá:
22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
Total: 16 llamadas

Gracias!


Título: Re: Enunciado ejercicio en C (no entiendo lo que me piden)
Publicado por: eferion en 27 Marzo 2014, 20:17 pm
* Tienes que pedir un número al usuario
* Ese numero se lo pasas a una funcion llamada funcioRe que tienes que implementar con las siguientes reglas:
    1. Si n es 1, entonces escribes el valor de n  (es decir, 1 ) por pantalla y haces que la función retorne 1
    2. Si n es par, escribes el valor de n, calculas la mitad de n y llamas a funcioRe con el valor calculado.
    3. Si n no es par y no es 1, calculas 3n+1 y llamas a funcioRe con el valor calculado.
    4. Dado que lo que se quiere es contar el número de saltos, en los casos 2 y 3 habrá que hacer retornar el valor devuelto por la llamada a funcioRe más uno.
* Una vez el codigo vuelve al main tienes que imprimir el número total de llamadas recursivas que ha habido.

Si lo que quiere es código... antes tienes que hacer un aporte que demuestre un mínimo de trabajo.