JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – Crockford的河内功能(来自“好的部分”)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > How does recursive algorithm work for Towers of Hanoi?                                    2个
目前我正在阅读道格拉斯·克罗克福德(Douglas Crockford)的书,而且河内功能的塔楼有点过头了.即使将日志记录到控制台,我也无法真正了解正在发生的事情.这是我添加的功能:

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

hanoi(3,'Src','Aux','Dst');

这导致以下结果:

而且我很早就输了.在结果的第6行,它怎么能从Src Aux回到Src Dst?

一旦它达到0,当该功能仅使用“disc-1”调用自身时,光盘的数量怎么能再次上升?

最佳答案
产生混淆是因为输出的文本表示不是理解递归的最佳方式.光盘的数量不是“上升”,而是在河内(0)完成后继续运行的河内(1).

我在JSBin创建了一个修改过的例子,用一些(有些)更漂亮的方式用空格打印输出.只有“移动”实际上做了什么,其余的行只是递归调用,以解决较小的子问题,以便以后解决整个问题.

您可能还想查看此Java applet,它以图形方式显示算法的工作原理 – 这可能更容易理解.

大佬总结

以上是大佬教程为你收集整理的javascript – Crockford的河内功能(来自“好的部分”)全部内容,希望文章能够帮你解决javascript – Crockford的河内功能(来自“好的部分”)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。