递归函数似乎没问题,但不会返回False

bok*_*666 0 python recursion symmetric asymmetric python-2.7

因此该函数应检查列表是否对称; 如果列表为空或具有一个整数,则它是对称的.

否则,该函数应检查第一个和最后一个整数是否相同并以递归方式继续.如果没有,请返回False.

代码似乎是正确的,但我无法弄清楚什么是错的以及为什么它不会返回False.

def symm(lst):

    t = len(lst)
    if t == 0 or 1:
        return True

    if t>1:
        if lst[0] == lst[-1]:
            return symm(lst[1:-2])
        else:
            return False

print symm([6,6,6,6,7])
Run Code Online (Sandbox Code Playgroud)

R N*_*Nar 5

if t == 0 or 1:永远是真的,因为这被读作if (t == 0) or (1):并且1总是如此.

改为:if t in [0,1]:或简单地说if len(lst) < 2:

  • 或者:`if t == 0或t == 1:` (2认同)
  • @R Nar真实,但对初学者来说更直观 (2认同)