Este programa imprime el reverso de una cadena que se ingresa.
La EOLN es ‘\ n’. Cuando alguien presiona la tecla ENTER, la función getchar devolverá una nueva línea (‘\ n’).
La función inversa se llama a sí misma hasta que el usuario no haya ingresado una EOLN. Cuando el usuario ha ingresado una nueva línea, imprime los caracteres ingresados desde el final.
- ¿Pueden los intrones tener longitudes que no sean múltiplos de 3 (lo que complicaría seriamente los algoritmos de predicción de genes)?
- ¿Cómo pueden uno y qué algoritmos podrían usarse para entrenar una red neuronal profunda con una cantidad limitada de datos desaprender sus representaciones mal aprendidas?
- Estoy comenzando un proyecto de clasificación de picos, ¿dónde encuentro datos sin procesar y / o simulados?
- ¿Aprender las estructuras de datos usando Python en lugar de C afectará mi comprensión de las estructuras de datos?
- ¿Pueden los algoritmos de aprendizaje automático reforzar los estereotipos?
Editar:
Cada vez que una función llama a otra función o se llama a sí misma, la pila de variables asociadas con el contexto de la ejecución de la nueva función es nueva. Por lo tanto, cada vez que se hace una llamada inversa, se crea una nueva copia de la pila variable.
Consideremos que el usuario ingresa algo como
“Foobar” y presiona enter.
La ejecución procederá como
1) reverso:
c = ‘F’ (! = ‘\ n’)
2) reversa:
c = “o” (! = ‘\ n’)
3) reverso:
c = “o” (! = ‘\ n’)
4) reverso:
c = “b” (! = ‘\ n’)
5) reverso:
c = “a” (! = ‘\ n’)
6) reverso:
c = “r” (! = ‘\ n’)
7) reverso:
c = ‘\ n’
imprimir “\ n”
imprimir “r”
imprimir “a”
imprimir “b”
imprimir “o”
imprimir “o”
imprimir “F”
Entonces, si ve el orden en que se imprime, será en orden inverso.
podemos hacer esta simulación de una manera diferente
considere este pseudocódigo:
función inversa:
char c
apilar S
while (c = getchar ()! = “\ n”) {
S.push (c)
}
while (! S.empty ()) {
imprimir S.top ();
S.pop ()
}
Si ve, no hay una recursión involucrada pero produce el mismo resultado que el programa publicado. Todas las funciones recursivas se pueden traducir a tales iterativas utilizando una estructura de datos de pila. por ejemplo, DFS.