我正在构建小型网页来解决著名的河内塔问题。一切都很好,但是当尝试在每个步骤存储三个塔的状态(8 个磁盘的 255 个步骤)时,我尝试使用数组数组或对象数组,其中包含代表每个塔中的磁盘的 3 个数组,但只有存在的状态存储8个磁盘(数组项),否则只有空数组!按照我的代码:
class steps //object that store state of towers at each step
{
constructor(src, spr, tgt)
{
this.src = src;
this.spr = spr;
this.tgt = tgt;
}
}
function Hanoi(n, source, target, spare)
{
if(n>0) {
Hanoi(n-1, source, spare, target);
target.push(source.pop());
document.getElementById('output').innerHTML+= source+ " ;" + spare + " ;" + target + "<br/>"; //print data to see what is happening
var obj = new steps(source, spare, target);
console.log(source, spare, target);
src_steps.push(obj); //src_steps is global variable
Hanoi(n - 1, spare, target, source);
}
}
src = [8, 7, 6, 5, 4, 3, 2, 1];
spr = [];
tgt = [];
Hanoi(8, src, spr, tgt);
问题是打印的数组包含应有的数据,但是对象数组仅包含包含 8 个项目的数组或空但没有少于 8 个项目的数组!这里发生了什么?