Recursión - Resolviendo la Torre de Hanoi

Torre de Hanoi

inserte la descripción de la imagen aquí
Objetivo: Mover uno a la vez. Mueve todo de A a C.
No se puede colocar lo grande debajo de lo pequeño.

Juega en línea: http://www.htmleaf.com/Demo/201508272485.html
Likou (es inútil): https://leetcode-cn.com/problems/hanota-lcci/

pensamiento recursivo

Uno: Ponlo directamente en el objetivo.
Dos: coloque primero uno en el caché y luego coloque el segundo en el objetivo.
. . .
N: Coloque todo lo anterior en el caché primero y luego colóquelo en el objetivo.

Para resumir:
1. Ponga lo anterior en el caché.
2. Ponme en el objetivo.
3, pon el caché en el objetivo.

todo el código

No mucho, pero parece sinuoso.

//统计步数
let count = 0
//三个数组
let A = [5, 4, 3, 2, 1]
let B = []
let C = []
//打印状态
function printInfo() {
    
    
	console.log("A:" + A)
	console.log("B:" + B)
	console.log("C:" + C)
	console.log("=============================" + (++count))
}

//调用
han(A.length, A, C, B)

function han(n, from, to, middle) {
    
    
	//最上面的一个,直接push,pop,打印状态
	if (n === 1) {
    
    
		to.push(from.pop())
		printInfo()
		//下面的N个,三步走
	} else {
    
    
		han(n - 1, from, middle, to)
		han(1, from, to, middle)
		han(n - 1, middle, to, from)
	}
}

Efecto: 5 elementos requieren 31 pasos.

inserte la descripción de la imagen aquí
8 elementos requieren 255 pasos.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_37284843/article/details/123921072
Recomendado
Clasificación