擅长:python、mysql、java
<p>您的<code>return True</code>行在第一次迭代时退出循环。因此,对于首字母和末字母相同的任何单词,函数都将返回True。另外,break语句是不必要的,因为它上面的返回行将在到达break之前退出整个函数</p>
<p>最后,为了更具python风格,应该避免使用索引遍历数组。尝试对值使用迭代</p>
<p>例如:</p>
<pre><code>def isPalindrome(n):
for forward,backward in zip(n,reversed(n)):
if forward != backward:
return False
return True
</code></pre>
<p><em>请注意,如果您正在寻找编写解决方案的最短方法,您甚至不需要循环<code>return n == n[::-1]</code>就可以了。它本质上是迭代的(与递归相反),因为==比较将遍历列表,反之亦然,以比较元素(您不必告诉它有多明确)。您还可以将其视为只执行一次迭代</em></p>
<p>出于比较目的,递归解决方案如下所示:</p>
<pre><code>def isPalindrome(A):
return not A or A[0]==A[-1] and isPalindrome(A[1:-1])
</code></pre>