我想问一下在编写时是否真的有必要跟踪每个递归调用,因为如果递归调用在循环内部或在多个for循环内部,我会遇到麻烦。当我试图了解正在发生的事情时,我只是迷路了。 您是否有一些建议如何处理递归问题以及如何设想它。我已经阅读了很多关于它的内容,但我还没有找到一个完美的答案。我理解例如factorial如何工作或fibonacci递归。例如,当我尝试打印1到5长度为3的所有组合或所有n-queen问题的解决方案时,我迷路了
答案 0 :(得分:1)
我有一个类似的问题,尝试绘制一个树状结构,跟踪每个递归调用。节点是一个函数,该节点的每个子节点都是从该函数发出的递归调用。
答案 1 :(得分:1)
每个人都可能有不同的心理方法来建模递归问题。如果你能以非递归的方式解决n皇后问题,那你就没事了。但是,掌握递归概念来解决问题肯定是有帮助的。如果您正在进行心理锻炼,那么我建议您在PROLOG上写一本教科书。它很有趣,从一开始就教授递归。
尝试在n-queens上进行一些大脑转储。通过尝试和错误,它就像“我将如何手动完成”。对于n-queens,我建议在你的脑海里称它为8级皇后作为开始,只是为了使它看起来更熟悉和直观。 “n”不是迭代器,而是指定问题大小。
以上是您的计划。您的例程将传递早期女王的位置列表。第一次调用是一个空列表。