Recursividad para cadena de números

Espero me puedas ayudar con este programa no se como puedo usar recursividad para hacer este programa pero con for es muy sencillo espero me puedas ayudar gracias
Escribe un programa implementando la programación recursiva para desarrollar series de números PARES y números IMPARES.
El programa deberá leer un número que represente la posición del limite de la serie .
Ej.
Si el número leído es el 6, esto representará que la serie de números pares e impares estará compuesta por seis números cada una y seria como sigue:
Pares: 2 4 6 8 10 12
Impares: 1 3 5 7 9 11
Respuesta
1
Como introducción hablemos rápidamente de recursividad, la recursividad la usaremos llamando así misma una función, ( creo que esto ya lo sabes) el chiste es saber como indicarle a esa función que se termina la llamada para que ya no siga llamando a más funciones internas, en otras palabras, el perder de vista "una condición" hace que se nos vuelvan llamadas infinitas
El siguiente código realiza la acción a tu problema, incluye comentarios, si no se alcanza a notar bien, mandame un mail a [email protected] y te envío el código, la otra forma es copiarlo de aquí y pegarlo en Block de notas, lo guardas como .cpp y lo abres en tu compilador
# include<stdio.h>
# include<conio.h>
void serie(int);
void num(int,int,int);
void main(void)
{
int n;
printf("Ingresa cuantos numeros en la serie: ");
scanf("%d",&n);
serie(n);
getch();
}
/*En esta función recibimos cuantos números van en cada serie
por ahora a este numero llamémosle N, imprimimos rótulos
y hacemos la llamada a la función recursiva.
Los parametros son:
1.- Recibe N, dentro de la recursividad a la siguiente llamada
se decrementa en 1 (ver NOTA 1)
2.- También recibe la N, pero solo la utiliza para calcular el
numero que sigue en la serie
3.- se pasa un 0 para serie PAR y 1 para serie IMPAR
*/
void serie(int N)
{
printf("PARES: ");
num(N,N,0);
printf("\nIMPARES: ");
num(N,N,1);
}
/*La formula ( 2* (m-n+1-i) ) +i es para hacer el calculo de los num
de la serie, ejemplo, ¿cuándo se le pasa el valor de 6 desde serie
la funcion serie queda serie(6) cierto?, ok, ahora, dentro de serie
se imprime "PARES: ", despues llama a num y queda como num(6,6,0)
ahora, cuando llegamos a num, pasa esto
num(6,6,0)
n---| | |
m-----| |
i-------|
calculamos segun formula
( 2* (m-n +1-i) ) +i
( 2* (6-6 +1-0) ) +0
( 2* ( 0 +1 ) )
( 2* ( 1 ) ) -----> imprime un 2
Verifica la condición si n>1 aquí n=6 por lo tanto 6>1
y llama de nuevo a la función num
num(5,6,0)
( 2* (m-n +1-i) ) +i
( 2* (6-5 +1-0) ) +0
( 2* ( 1 +1 ) ) -----> imprime un 4
5>1 si, se llama otra vez como:
num (4,6,0)
( 2* (m-n +1-i) ) +i
( 2* (6-4 +1-0) ) +0
( 2* ( 2 +1 ) ) -----> imprime un 6
*/
void num(int n,int m,int i)
{
printf("%d ",(2*(m-n+1-i))+i);
if(n>1) //NOTA 1, llamada recursiva, el primer parametro
num(n-1,m,i); //se decrementa en 1, los demas siguen sin cambio
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas