Introducción:
Otro ejercicio de programación, la verdad es que este tipo de ejercicios se me dificultan más, ya que es complicado explicarlo para mi, aun así intentare hacerlo.
Problema:
Generar y mostrar los primeros N términos de la siguiente serie: 1,1,2,1,2,3,1,2,3,4,1,2,34,5,1
Solución:
Primera parte:
Podemos definir la cantidad de términos que retornaría, si N tomara el valor de:
N=7
Retorna: 1,1,2,1,2,3,1
N=13
Retorna: 1,1,2,1,2,3,1,2,3,4,1,2,3
N=4
Retorna: 1,1,2,1
N=8
Retorna: 1,1,2,1,2,3,1,2
Bueno, ya tenemos claro que cantidad de términos retornaran en algunos casos. Ahora podemos enfocarnos en la secuencia de la serie.
Segunda parte:

Como podemos observar, la se secuencia inicialmente tiene como valor máximo a uno, la siguiente vez su valor máximo es dos por ende va del uno al dos, la tercera vez el valor máximo es tres y va incrementando del uno al tres; pero no es su valor máximo el que determina hasta que número va a retornar ya que el incremento de la serie puede cortarse de manera abrupta en el momento en que N sea igual a cero.
Explicando esto de otra manera podemos suponer que N=3 entonces la serie se comportaría así:
Primera tanda:
N=3
max=1
i=1
N es mayor que 0 —>si
Mostrar i
i incrementa en 1 y ahora vale 2
i es mayor que max —>si
entonces i vale 1 y max incrementa en 1 y vale 2
N decrementa en 1 y vale 2
Segunda tanda:
N=2
max=2
i=1
N es mayor que 0 —>si
Mostrar i
i incrementa en 1 y ahora vale 2
i es mayor que max —>no
N decrementa en 1 y vale 1
Tercera tanda:
N=1
max=2
i=2
N es mayor que 0 —>si
Mostrar i
i incrementa en 1 y ahora vale 3
i es mayor que max —>si
entonces i vale 1 y max incrementa en 1 y vale 3
N decrementa en 1 y vale 0
Cuarta Tanda:
N=0
max=3
i=1
N es mayor que 0 —>no
entonces se cierra el proceso y termina.
Otra manera de poder mostrarles el proceso es en pseudocódigo.
Donde:
- N es la cantidad de términos a mostrar.
- i es la variable que va incrementando y reinicia su valor.
- max indica el limite del incremento de i.
variables inicializadas
N->Valor dado por el usuario
max=1
i=1
while(N>0){
Mostrar i
i=i+1;
if(i>max){
i=1;
max=max+1;
}
N=N-1;
}
return 0;
}
Para ver que el código funciona aquí se los dejo escrito en c++, con la variante de que en lugar de mostrar directamente el termino una vez generado, lo concatena en otra variable para verlo de forma más ordenada y en fila.
Las variables serán las mismas que en el pseudocódigo código.
#include <iostream>
#include <string>
using namespace std;
int main(){
int N,i,max;
string serie ="";
cout<< "por favor ingrese un número: ";
cin>>N;
i=1;
max=1;
while(N>0){
serie=serie+to_string(i)+",";
i=i+1;
if(i>max){
i=1;
max=max+1;
}
N=N-1;
}
cout<< serie;
cout <<"\n"<<endl;
return 0;
}
Si encuentras algún error por favor dejalo en los comentarios, para que pueda rectificar el ejercicio.