擅长:python、mysql、java
<p>是的,您需要学习有关生成器的教程,以便更全面地了解它们的工作原理。您目前面临的问题是<code>n_queens_solutions</code>只调用<code>helper</code>函数一次,即第一个分支找不到解决方案,并且显示失败时返回的空板。你知道吗</p>
<p>简单地说,把生成器看作是一个带有书签的函数。当您调用生成器时,它将一直执行,直到到达第一个<code>yield</code>;它返回该值,但保留其所有状态信息:所有变量值、它在代码中的位置等。当您再次调用它时,它将从该点重新启动并继续,直到到达下一个<code>yield</code>,并以这种方式继续,直到它从代码末尾脱落密码。你知道吗</p>
<p>生成器最简单的用途是作为迭代器:</p>
<pre><code>for solution in n_queens_helper(...):
</code></pre>
<p>您已经以这种方式使用了它(通过在主程序中构建解决方案列表)和重复部分解决方案(使用<code>yield from</code>),但是您需要在控制流上做更多的工作。尝试插入跟踪语句:</p>
<pre><code>def n_queens_helper(n, board, size):
print("ENTER helper", n, board)
if len(board) == size:
</code></pre>
<p>现在观察执行的进展。你知道吗</p>