javascript - 汉诺塔递归问题解释

查看:75
本文介绍了javascript - 汉诺塔递归问题解释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

看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')语句了,而不是结束。

解决方案

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

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

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

这篇关于javascript - 汉诺塔递归问题解释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆