Para resolver el ejercicio de "Imprimir los primeros N términos de la secuencia 1 0 1 0 1 ..." hay al menos dos formas: una se me ocurrió al momento pero estaba horrible (es decir, era más complicada de lo que yo hubiera preguntado en un primer examen) y es la siguiente: void imprime_alternado(int n) { if (n == 0) { return; } else if (n == 1) { std::cout << "1"; } else if (n == 2) { std::cout << "1 0 "; } else { std::cout << "1 0 "; imprime_alternado(n - 2); } } La forma que se le ocurrió a su compañero surge de observar lo siguiente: Para N=0 hay que imprimir: Para N=1 hay que imprimir: 1 Para N=2 hay que imprimir: 1 0 Para N=3 hay que imprimir: 1 0 1 Para N=4 hay que imprimir: 1 0 1 0 Para N=5 hay que imprimir: 1 0 1 0 1 Noten que cada vez que se incrementa N, aparece una cifra más a la derecha (pero lo de la izquierda es lo del caso anterior). Esto nos da la siguiente idea: que recursión imprima correctamente los primeros N-1 dígitos de la izquierda y luego nosotros imprimimos el último, como corresponda. Esto es bastante más elegante: void imprime_alternado(int n) { if (n != 0) { imprime_alternado(n - 1); std::cout << n % 2 << " "; // si estamos en N=4, que la recursión imprima "1 0 1" y a nosotros nos toca un 0 al final porque somos pares } // si estamos en N=5, que la recursión imprima "1 0 1 0" y a nosotros nos toca un 1 al final porque somos impares } Esta pregunta viene de un examen viejo y honestamente no me acuerdo si de plano tenía la intención de preguntar esto o si es verdad que me equivoqué al poner el problema (si en aquel entonces sí tenía la intención de poner esa pregunta, entonces exageré un poquito con la dificultad). En el examen del viernes no vendrán cosas así.