javascript - 汉诺塔递归问题解释
PHPz
PHPz 2017-04-10 17:32:15
0
2
2383

看JavaScript语言精粹这本书的时候,看到汉诺塔的递归算法,有些不明白的地方,望指点。代码如下:

var hanoi = function(disc,src,aux,dst){ if(disc>0){ console.log("1:::"+disc); hanoi(disc-1,src,dst,aux); console.log("2:::"+disc); console.log('Move disc '+ disc + ' from '+src+' to '+dst); hanoi(disc-1,aux,src,dst); console.log("3:::"+disc); } } hanoi(3,'src','aux','dst');

执行过程贴了部分如下:

1:::3 1:::2 1:::1 2:::1 Move disc 1 from src to dst 3:::1 2:::2 Move disc 2 from src to aux 1:::1 2:::1 Move disc 1 from dst to aux

我想知道为什么disc参数值变成0的时候,怎么就能执行后面的console('Move disc 1 from src to dst')语句了,而不是结束。

PHPz
PHPz

学习是最好的投资!

reply all (2)
阿神

第一个hanoi(0,'src','aux','dst');跳出回到hanoi(1,'src','aux','dst')继续往下就是 console.log("2:::"+disc);

console.log('Move disc '+ disc + ' from '+src+' to '+dst);

没什么毛病啊,你一步一步撸下去就是这么个结果啊,有什么问题吗?
觉得混乱用控制台的断点调试下就懂了

    黄舟

    我想你没有弄懂递归…

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!