Diretório de artigos
Torre de Hanói
Objetivo: Mover um de cada vez. Mova tudo de A para C.
O grande não pode ser colocado sob o pequeno.
Jogue online: http://www.htmleaf.com/Demo/201508272485.html
Likou (é inútil): https://leetcode-cn.com/problems/hanota-lcci/
pensamento recursivo
Um: Coloque-o diretamente no alvo.
Dois: coloque um no cache primeiro e depois coloque o segundo no destino.
. . .
N: Coloque todos os itens acima no cache primeiro e depois coloque-os no destino.
Para resumir:
1. Coloque o acima no cache.
2. Coloque-me no alvo.
3, coloque o cache no destino.
todo o código
Não muito, mas 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)
}
}
Efeito: 5 elementos requerem 31 passos.
8 elementos requerem 255 passos.