La solución recursiva popular simple al problema de Hanoi es
def moveTower(height,fromPole, toPole, withPole):
if height >= 1:
moveTower(height-1,fromPole,withPole,toPole)
moveDisk(fromPole,toPole)
moveTower(height-1,withPole,toPole,fromPole) def moveDisk(fp,tp):
print("moving disk from",fp,"to",tp) moveTower(4, "A","B","C")
def moveTower(height,fromPole, toPole, withPole):
if height >= 1:
moveTower(height-1,fromPole,withPole,toPole)
moveDisk(fromPole,toPole)
moveTower(height-1,withPole,toPole,fromPole) def moveDisk(fp,tp):
print("moving disk from",fp,"to",tp) moveTower(4, "A","B","C")
- Proyectos teóricos de informática o desarrollo de aplicaciones, ¿qué le sugerirías a los estudiantes de primer año de informática?
- ¿Qué es una prueba intuitiva de que las redes neuronales recurrentes pueden calcular cualquier función computable por una máquina Turing?
- No puedo entender diferentes algoritmos para la programación competitiva debido a las matemáticas ¿qué cursos de matemáticas necesito tomar para ser fuerte en CP?
- ¿Qué problema resolvió Alan Turing y cómo eso lo llevó a ser etiquetado como el 'Padre de la Informática'?
- ¿Cómo puede aprovechar al máximo una prueba de Mathematica 9?
def moveTower(height,fromPole, toPole, withPole):
if height >= 1:
moveTower(height-1,fromPole,withPole,toPole)
moveDisk(fromPole,toPole)
moveTower(height-1,withPole,toPole,fromPole) def moveDisk(fp,tp):
print("moving disk from",fp,"to",tp) moveTower(4, "A","B","C")
El código anterior se toma de aquí: Resolución de problemas con algoritmos y estructuras de datos
Deje que el tiempo para mover una torre de altura [matemáticas] n [/ matemáticas] sea [matemáticas] T (n) [/ matemáticas].
También permita que el tiempo para mover un disco sea 1.
Entonces el algoritmo anterior lleva tiempo: [matemática] T (n) = 2T (n-1) + 1 [/ matemática]
[mates]
\ por lo tanto \ T (n) = 2T (n-1) + 1 = t_ {1} \ as \ defined \ in \ problem
\\
=> T (n + 1) = 2T (n) + 1 = 2t_ {1} + 1
\\
=> T (n + 2) = 2T (n + 1) + 1 = 2 (2t_ {1} + 1) +1
\\
=> t_ {2} = 4t_ {1} + 3
[/mates]