调用该函数,检查范围内的回文

mik*_*.ro 0 python python-2.7

我正在尝试创建一个函数,它递归地检查给定范围内的回文.该范围被发送到"is_palindrome_multi",然后调用"is_palindrome".但是,它不适用于高于10的数字,因此限制步骤似乎是:

elif data [0] == data [-1]:

声明.为什么它不会像11,22这样的数字返回?我将很感激解释.

def is_palindorme_multi(beg, end):
    for i in range(beg, end):
        i = str(i)
        if is_palindrome(i) == True:
            print "Palindrome"
        else:
            print "Not palindrome"


def is_palindrome(data):    
    print data,
    if len(data)==1 or len(data)==0:
        return True
    elif data[0]==data[-1]:
        is_palindrome(data[1:-1])
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 6

您没有返回递归调用的结果.

改变你的elif:

elif data[0]==data[-1]:
    is_palindrome(data[1:-1])
Run Code Online (Sandbox Code Playgroud)

至:

elif data[0]==data[-1]:
    return is_palindrome(data[1:-1])
Run Code Online (Sandbox Code Playgroud)

但是,我只是将您的is_palindrome方法更改为:

def is_palindrome(data): 
    return data == data[::-1]
Run Code Online (Sandbox Code Playgroud)

真的,这里不需要使用递归.