Los recursos de su sistema son limitados. Ellos son limitados. Incluso si su sistema tiene la mayor cantidad de memoria y almacenamiento en toda la Tierra, infinito es MUCHO MÁS GRANDE de lo que tiene. Recuerda eso ahora.
La única manera de hacer algo un "número infinito de veces" es "olvidarse" de la información anterior. Es decir, debes "olvidar" lo que se ha hecho antes. De lo contrario, tienes que recordar lo que sucedió antes y que se lleva el almacenamiento de una forma u otra (caché, memoria, espacio en el disco, escribir cosas en el papel, ...). Esto es inevitable. Si está almacenando cosas, tiene una cantidad limitada de espacio disponible. Recuerda, ese infinito es MUCHO MÁS GRANDE que lo que tienes. Si intenta almacenar una cantidad infinita de información, se le agotará el espacio de almacenamiento.
Cuando emplea recursividad, está almacenando implícitamente información previa con cada llamada recursiva. Por lo tanto, en algún momento agotarás tu almacenamiento si tratas de hacer esto un número infinito de tomas. Su espacio de almacenamiento en este caso es la pila. La pila es una pieza de memoria finita. Cuando lo usa todo e intenta acceder más allá de lo que tiene, el sistema generará una excepción que, en última instancia, puede dar como resultado un fallo seg si la memoria a la que intentó acceder estaba protegida contra escritura. Si no estaba protegido contra escritura, continuará, sobrescribiendo lo que sabe Dios hasta que intente escribir en la memoria que simplemente no existe, o intente escribir en otra parte de la memoria protegida contra escritura. , o hasta que corrompa tu código (en la memoria).
Consulte [¿Por qué este error de segmentación de fragmentos de código en C++?] (Http://stackoverflow.com/questions/2809014/why-does-this-c-code-snippet-segmentation-fault). –