擅长:python、mysql、java
<p>您有两个问题:第一个问题是<code>n==0</code>和<code>n==1</code>的特殊大小写没有减少<code>n</code>,因此它进入了一个无限循环。这种特殊的套管其实并不需要,可以放下。你知道吗</p>
<p>第二个,也是更重要的一个,是在测试<code>i*i == (i*(3*i-1)//2)</code>中,假设平方数和五边形数的索引<code>i</code>相同。但是这种情况只会发生在<code>i==0</code>和<code>i==1</code>上,所以您不会找到超过该值的值。你知道吗</p>
<p>我建议:</p>
<ol>
<li>迭代<code>i</code>而不是<code>n</code>使事情更简单。你知道吗</li>
<li>取第<code>i</code>个五边形数并检查它是否是一个平方数(例如<code>int(sqrt(x))**2 == x</code>)。你知道吗</li>
<li>当你达到<code>n</code>数字时停止。你知道吗</li>
</ol>