Enunciado ejercicio en C (no entiendo lo que me piden)

Iniciado por sora_ori, 27 Marzo 2014, 18:58 PM

0 Miembros y 1 Visitante están viendo este tema.

sora_ori

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


CitarHacer 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!

eferion

* 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.